web-dev-qa-db-ja.com

口ひげjavascriptの引数で関数を呼び出す

Mustache.js で引数を指定して関数を呼び出すことは可能ですか?

 {{somefunction(somevalue)}} 
52
sinisa

http://mustache.github.com/mustache.5.html のLambdasのセクションをご覧ください

口ひげテンプレートブロック:

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

機能ブロック:

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

出力:

I passed in this value: someValue
55
bluehazetech

マークアップがdomに挿入された後にスクリプトの内容を実行する場合は、jqueryのように同じことを行うライブラリを使用する必要があります。

ここでこれを試してください:

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

また、スクリプトファイルで他のメソッドを呼び出す場合。必要なのは、その関数のスコープに応じて関数を呼び出すことと、それがdomにプリロードされているかどうかです。

お役に立てれば。

追伸:テンプレートマークアップのscriptタグのエスケープに注意してください

1
Baz1nga

私にとってこれは動作します:

一般関数FUNCをjson(データ)に追加します。

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

ページ上の通常のJavaScript:

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

引数としてタグ値を使用して通常のjavascript-functionを呼び出すMustacheテンプレートブロック:

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

jsonで定義された関数を呼び出すこともできます。

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

1
Holle