传递给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;});
答案 0 :(得分:1)
Mustache将数组中的值作为对象处理。您可以在控制台中键入new String('foo')
来查看。输出类似于胡子所看到的输出。
因此,您需要更改数组以包含对象,例如:
data.list = [ { value: 'title' }, { value: 'editor' } ];
您的{{test}}
访问者:
data.test = function(){ console.log(this.value); };