我一直在为Handlebars.compile()调用获取TypeError。我尝试将jQuery.noConflict()添加到其他一些帖子中建议的各个地方,但不是运气。
TypeError: 'undefined' is not a function (evaluating 'Handlebars.compile('test')')
代码是:
$('.location-typeahead').typeahead(
{
name: 'states',
displayKey: 'value',
source: states(),
templates: {
header: '<h4 class="location-typeahead-header">Title</h4>',
suggestion: Handlebars.compile('test')
}
}
);
如果我删除整个“suggestion”模板参数,我的JS工作正常。
答案 0 :(得分:5)
您可能已包含Handlebars的运行时版本。如果要在客户端编译模板,则需要包含完整版本。
或者,您可以预编译模板 - 然后您只需要运行时。
答案 1 :(得分:0)
不要试图做一个简单的模板。所有文档都指向使用Handlebars模板 - 但在根级别建议&#39;模板的属性只需要是一个接受数据对象的函数。然后环境返回格式化的字符串标记。
请参阅下面的有效示例,对格式/布局稍作调整 - 只要您在数据源中返回所需的数据,这应该适用于更高级的数据。
//where data is the single data object returned
//and environment is the typeahead context
suggestion: function(data, env) {
return "<p><strong>" + data.owner_name + "</strong> – " + data.name + "</p>";
}