web-dev-qa-db-fra.com

fonction appelante avec arguments en javascript moustache

Est-il possible d'appeler une fonction avec des arguments avec Moustache.js

 {{somefunction (somevalue)}} 
Je vous remercie

50
sinisa

Consultez la section sur Lambdas à http://mustache.github.com/mustache.5.html

Bloc de modèle de moustache:

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

Bloc fonction:

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

Sortie:

I passed in this value: someValue
54
bluehazetech

Si vous voulez que le contenu du script soit exécuté après que le balisage ait été inséré, vous devez utiliser une bibliothèque qui fera la même chose que jquery.

Essayez ceci ici:

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

Aussi, si vous souhaitez invoquer une autre méthode dans votre fichier de script. Tout ce que vous avez à faire est d'appeler la fonction en fonction de son étendue et si elle a été préchargée dans le dom.

J'espère que cela t'aides.

P.S: notez l'échappement de la balise script dans le balisage du modèle

1
Baz1nga

pour moi cela fonctionne:

ajouter la fonction générale FUNC à json (données):

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

javascript classique sur la page:

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

Le bloc de modèle Mustache appelle la fonction javascript normale avec les valeurs de balise comme arguments:

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

vous pouvez aussi appeler une fonction définie dans le json:

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

1
Holle