2011-05-18 7 views

Respuesta

-1

¿Estás tratando de llamar a una función como parte de su análisis del código bigote? o generar salida, que llamaría a la función de JavaScript? p.ej. Esto generaría HTML que llamaría a la función (creo).

{{#items}} 
    <script>{{funcName}}("{{url}}");</script> 
{{/items}} 
+1

En mi situación tengo este ejemplo:

{{algo}}

, como algo es: var something = function() {return "a"}; cuando presento la plantilla su variable de llamada que es una función ... entonces obtuve "a" en lugar de {{algo}} ... pero ahora necesito argumentos y eso es lo que estoy buscando – sinisa

+14

Wow, esto es feo. – ViniciusPires

+0

Si va a insertar las etiquetas '

48

Mira la sección sobre Lambdas en http://mustache.github.com/mustache.5.html

bigote bloque de plantilla:

{{#someFunction}}someValue{{/someFunction}} 

bloque de función:

someFunction : function() { 
    return function(val, render) { 
    return "I passed in this value: " + render(val); 
    }; 
} 

Salida:

I passed in this value: someValue 
+0

Simplemente una advertencia de javascript, después del bloque de función de retorno, necesita haber un punto y coma (;). El paquete SublimeLinter de Sublime Text recogió esto. –

+3

Esto solo me funcionaría si cambiara la firma de la función a 'return function (val, render) {' – Evildonald

+1

aclarando lo anterior http://www.levihackwith.com/mustache-js-render-is-not-defined/ – AberZombie

2

Si desea que el contenido del script se ejecute después de que el marcado se inserta nito en el dom, debe usar alguna biblioteca que haga lo mismo que jquery.

probar esto aquí:

http://jsfiddle.net/anilkamath87/GBP8N/

Además, si desea invocar algún otro método en el archivo de script. Todo lo que necesita hacer es llamar a la función dependiendo del alcance de esa función y si ha sido precargada en el dom.

Espero que esto ayude.

PS: observar el escape de la etiqueta script en el formato de plantilla

1

para mí esto funciona:

añadir FUNC función general de JSON (datos):

data.FUNC = function(){ 
       return function(val, render){ 
        var values = JSON.parse(render(val)); 
        return window[values.FUNCNAME].apply(this, values.FUNCARGS); 
       }; 
      }; 

javascript regular en página:

function foo(arg1, arg2){ 
    return "Arg1 is " + arg1 + " and Arg2 is " + arg2; 
}; 

Bloque de plantilla de bigote llamando al javascript normal función con valores de etiqueta como argumentos:

{{#FUNC}}{"FUNCNAME":"foo", "FUNCARGS":["{{page}}","{{title}}"]}{{/FUNC}} 

también se puede llamar a una función definida en el JSON:

{{#calljsfunction}} {{#FUNC}}{"FUNCNAME":"{{calljsfunction}}", "FUNCARGS":["{{page}}","{{title}}"]}{{/FUNC}}{{/calljsfunction}}

Cuestiones relacionadas