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"} 

为什么 Mustache 会断弦?我能阻止它吗?这不允许我做一个简单的任务:

$.inArray(this, someArray);

最糟糕的是——Mustache 的 String 对象没有 .join() 方法,所以我没有机会,因为只能通过循环将它粘回去:

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

1 回答 1

1

Mustache 将数组中的值作为对象处理。您可以通过new String('foo')在控制台中输入来查看。输出类似于你看到的 mustache 产生的输出。

因此,您需要更改数组以包含对象,例如:

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

和你的{{test}}访问者:

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