【问题标题】:typeerror: 'undefined' is not a function even when using jQuery.noConflicttypeerror: 'undefined' 不是一个函数,即使使用 jQuery.noConflict
【发布时间】:2014-02-18 00:58:36
【问题描述】:

我不断收到 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')
  }
}
);

如果我删除整个“建议”模板参数,我的 JS 工作正常。

【问题讨论】:

  • 听起来不像是 jquery 问题。您是否在页面中包含了车把脚本?在开发者工具栏中输入Handlebars 会得到什么?
  • &gt; Handlebars &lt; HandlebarsEnvironment COMPILER_REVISION: 4 Exception: function Exception(message, node) { HandlebarsEnvironment: function HandlebarsEnvironment(helpers, partials) { REVISION_CHANGES: Object SafeString: function SafeString(string) { Utils: Object VERSION: "1.3.0" VM: Object create: function () { createFrame: function (object) { helpers: Object log: function log(level, obj) { logger.log(level, obj); } logger: Object partials: Object template: function (spec) { __proto__: HandlebarsEnvironment
  • 您在该列表中看到compile 吗?我怀疑您包含了运行时版本,而不是完整版本。哦...或者错误可能在您的 test 模板中。
  • 呃!我确实使用了运行时版本。下载其他版本后就可以使用了。谢谢!
  • 犯了同样的错误。它发生了。我很高兴你也犯了错误,因为我找到了答案:-)

标签: javascript jquery handlebars.js bootstrap-typeahead


【解决方案1】:

您可能已经包含了 Handlebars 的运行时版本。如果要在客户端编译模板,则需要包含完整版本。

或者,您可以预编译您的模板 -- 然后您只需要运行时。

【讨论】:

  • 希望我在浪费一个小时之前查一下这个。我也无意中使用了运行时。谢谢你的回答。
【解决方案2】:

不要试图做一个简单的模板。所有文档都指向使用 Handlebars 模板 - 但在根级别,模板的“建议”属性必须是一个接受数据对象和环境然后返回格式化字符串标记的函数。

请参阅下面的有效示例以对格式/布局进行一些细微调整 - 只要您在数据源中返回所需的数据,这应该适用于更高级的。

 //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>";
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-06
    • 2015-03-19
    • 2021-09-18
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    相关资源
    最近更新 更多