Mustache.js:为什么它将字符串分解为单独字符的Object

时间:2013-02-25 08:10:40

标签: javascript mustache

传递给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;});

1 个答案:

答案 0 :(得分:1)

Mustache将数组中的值作为对象处理。您可以在控制台中键入new String('foo')来查看。输出类似于胡子所看到的输出。

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

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

您的{{test}}访问者:

data.test = function(){ console.log(this.value); };