typeerror:即使使用jQuery.noConflict,'undefined'也不是函数

时间:2014-02-18 00:58:37

标签: javascript jquery handlebars.js bootstrap-typeahead

我一直在为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工作正常。

2 个答案:

答案 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>";
 }