2

Mustacheに渡されるjavaScriptオブジェクト:

data      = {};
data.list = ['title', 'editor'];
data.test = function(){ console.log(this); };

口ひげテンプレート

{{#list}}
   {{test}}
{{/list}}

コンソール(Chrome)での出力:

String {0: "t", 1: "i", 2: "t", 3: "l", 4: "e"}
String {0: "e", 1: "d", 2: "i", 3: "t", 4: "o", 5: "r"} 

なぜ口ひげは文字列を壊すのですか?止めてもいいですか?これでは、簡単なタスクを実行できません。

$.inArray(this, someArray);

最悪のこと-MustacheのStringオブジェクトには.join()メソッドがないので、ループで接着するだけなので、チャンスはありません。

var str = '';
$.each(this, function(k,v){str += v;});
4

1 に答える 1

1

Mustacheは、配列内の値をオブジェクトとして処理します。new String('foo')コンソールに入力すると、それを確認できます。出力は、口ひげによって生成されたものと似ています。

したがって、次のようなオブジェクトを含むように配列を変更する必要があります。

data.list = [ { value: 'title' }, { value: 'editor' } ];

そしてあなたの{{test}}アクセサー:

data.test = function(){ console.log(this.value); };
于 2013-02-25T08:32:32.937 に答える