Posteado por: creadorsa | 30 marzo 2010

Externalizando funciones javascript

El último post mostró la gran capacidad de la integración de otros lenguajes a la plataforma de Creador y la forma en que se pueden compartir variables, sin embargo no vimos ejemplos claros de cómo llamar las funciones definidas en un script:javascript fuera de la etiqueta. Cuando se ejecuta la etiqueta script:javascript se crea junto con ella, una funcion llamada _funcion_js, que permite hacer llamadas posteriores a las funciones del script. Cada lenguaje tiene su propia forma de externalizar el consumo de sus funciones. En este caso veremos cómo se utiliza con Javascript.

En el siguiente ejemplo definiremos 3 funciones en un objeto funcion y una función invidual, externalizaremos sus llamadas a variables de la página con variables.put, y luego las llamaremos de diferentes formas con Coldfusion y código Creador WAP.

A continuación va el archivo completo y sus comentarios:

<wap:document>
<wap:head>
<wap:title>Test de Funciones</wap:title>
<cfparam name=”nombre” default=”2dsjj2″/>
</wap:head>
<wap:body>

<script:javascript>
function libreria(){

var _str = ”;
return({

definir_nombre: function ( str ) {

_str = str;

},

soloLetras: function(){

var str = _str;
var flag = true;
var i = 0;
var alpha = ‘ABCDEFGHIJKLMN\321OPQRSTUVWXYZ\301\311\315\323\332′;
alpha += alpha.toLowerCase();
while (i < str.length && flag){
flag = (alpha.indexOf(str.charAt(i++)) != -1);
}
return (flag);

},

saludar: function(){

return (‘Hola ‘ + _str + ‘, desde func libreria, metodo saludar.’);

}

});

};

function saludo_largo ( str ) {

return (‘Hola ‘ + str + ‘, soy una funcion individual.’);

}

// exportamos funciones javascript a variables disponibles en Coldfusion
variables.put(‘libreria’,libreria());
variables.put(‘saludo_largo’,saludo_largo);
</script:javascript>

<!— llamamos funciones desde Coldfusion y mostramos en pantalla ejecuciones —>
<wap:block align=”left”>
<cfoutput>
<wap:b>JAVASCRIPT:</wap:b><wap:br/>
param nombre = #nombre#<wap:br/><wap:br/>

Llamamos funciones javascript desde Coldfusion:<wap:br/>
_funcion_js(saludo_largo,’saludo_largo’,nombre) = #_funcion_js(saludo_largo,’saludo_largo’,nombre)#<wap:br/><wap:br/>

Usamos funcion Libreria (ej.1),<wap:br/>
Llamamos definir_nombre(‘Felipe’): _funcion_js(libreria,’definir_nombre’,’Felipe’)<wap:br /><cfset _funcion_js(libreria,’definir_nombre‘,’Felipe‘)>
Llamamos saludar: _funcion_js(libreria,’saludar’) = #_funcion_js(libreria,’saludar’)#<wap:br/>
Llamamos soloLetras: _funcion_js(libreria,’soloLetras’) = #_funcion_js(libreria,’soloLetras’)#<wap:br/><wap:br/>

Usamos funcion Libreria (ej.2, con variable nombre),<wap:br/>
Llamamos definir_nombre(nombre): _funcion_js(libreria,’definir_nombre’,nombre)<wap:br /><cfset _funcion_js(libreria,’definir_nombre‘,nombre)>
Llamamos saludar: _funcion_js(libreria,’saludar’) = #_funcion_js(libreria,’saludar’)#<wap:br/>
Llamamos soloLetras: _funcion_js(libreria,’soloLetras’) = #_funcion_js(libreria,’soloLetras’)#<wap:br/><wap:br/>

Usamos funcion saludo_largo de manera abreviada:<wap:br/>
_funcion_js(objeto:saludo_largo,arg1:nombre) = #_funcion_js(objeto:saludo_largo,arg1:nombre)#<wap:br/>
</cfoutput>
</wap:block>
</wap:body>
</wap:document>

El anterior ejemplo lo pueden copiar y pegar en una página cfm de sus proyecto y ver su ejecución. En definitiva, la forma de llamar una función de Javascript desde Coldfusion en Creador tiene los siguientes 3 pasos:

  1. Definir la función en script:javascript
  2. Externalizar la función en una variable de la página con variables.put(‘objetovarnuevo’,nombrefuncjavascript);
    1. Si la función de Javascript es un objeto con submétodos, debe inicilizarse primero antes de externalizarse. Ej. variables.put(‘objetovarnuevo‘,nombrefuncobjeto());
    2. Si la función de Javascript es simple, solo se nombra como una variable.
  3. Llamarla en donde se quiera utilizar con:
    _funcion_js (
    objetovarnuevo, ‘nombrefuncion’, parametros);
    En donde el argumento parametros corresponde a cualquiera sea la cantidad de parámetros que soporte la funcion JavaScript. Ejemplo:
    _funcion_js (objetovarnuevo, ‘definir_persona’, ‘Pablo’, 30, ‘1.73’ );
    También, cuando la función Javascript es simple se puede llamar de la siguiente forma:
    _funcion_js (objeto=objetovarnuevo, arg1=’Pablo’, arg2=30, arg3=’1.73′ );

Esperamos que esta explicación les haya servidor.Con un poco de imaginación, incluso podrían externalizar una librería de funciones Javascript como un webservice. Eso se los dejo de tarea.

Ante cualquier pregunta, solo comenten y trataré de responder a la brevedad.

About these ads

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: