我在mustache.js第103行中收到错误Object [object Array] has no method 'search'
。
当页面准备就绪时,我已经创建了一个模板对象:
window.templates = {};
$("script[type='text/mustache']").each(function(){
window.templates[this.id] = Mustache.parse(this.innerHTML);
});
然后我从我的服务器获得了一个json对象,我将其传递给渲染函数。
var render = function(data){
var content = "";
for (n in data){
content += Mustache.render(window.templates[n], data[n], window.templates);
}
return content;
}
我正在尝试将模板与模型匹配:window.template
键与我的模型返回的数据对象中的键匹配。由于模板可能包含其他模板作为partials,我最后将整个模板对象传回。我可以确认我得到了我期望的模型名称,并且它与模板匹配得恰到好处。
我是Mustache的新手,所以这可能是一个简单的修复。我错过了什么?
由于
答案 0 :(得分:1)
没有Mustache版本我只能猜测,但似乎你使用的是0.7.3版本。如果是这样,那么您正在查看错误的文档("Pre-parsing and Caching Templates" in master branch)。你应该看的是"Compiled Templates" in docs for v0.7.3。
所以你应该做的是
window.templates = {};
$("script[type='text/mustache']").each(function() {
window.templates[this.id] = Mustache.compilePartial(this.id, this.innerHTML);
});
和您的render()
功能
function render(data) {
var content = "";
for(var n in data) {
// don't pass partials. internal cache will be used
content += window.templates[n](data[n]);
}
return content;
}
以下是plunker。