HandlebarsHelper编译模板tempateSpec.call undefined

时间:2014-11-07 19:08:45

标签: ember.js handlebars.js handlebarshelper

我在MVC5网站上遇到HandlebarsHelper编译模板的问题。以下是BundleConfig的代码:

bundles.Add(new Bundle("~/bundles/templates", new HandlebarsTransformer())
            .IncludeDirectory("~/App/templates", "*.hbs", true));

这在本地工作正常,然后我推送到托管QA环境的服务器,我得到一个程序集引用错误,说HandlebarsHelper插件调用Jurassic 2.1.0.0并且找不到它。所以我通过Nuget添加了Jurassic,从那时起模板就停止了工作。我从浏览器中收到此错误:

铬: 未捕获的TypeError:undefined不是函数

火狐: TypeError:templateSpec.call不是函数

这发生在handlebars.js的以下部分:

return function(context, options) {
  options = options || {};
  var namespace = options.partial ? options : env,
      helpers,
      partials;

  if (!options.partial) {
    helpers = options.helpers;
    partials = options.partials;
  }
  var result = templateSpec.call(
        container,
        namespace, context,
        helpers,
        partials,
        options.data);

  if (!options.partial) {
    env.VM.checkRevision(container.compilerInfo);
  }

  return result;
};

我正在跑步:

Ember 1.7.0 Ember-Data 1.0.0-beta.11 把手1.3.0 JQuery 2.1.1

MVC 5 .Net 4.5.2

我整个上午一直在网上搜索,但没有找到任何有效的答案,我尝试删除侏罗纪Nuget包,但没有帮助。任何想法都将不胜感激,如果有任何其他信息可以帮助诊断问题,请告诉我。

2 个答案:

答案 0 :(得分:0)

您使用的是HandlbarsHelper版本,该版本的Ember.js不支持该版本。

版本1.9发生了重大变化,增加了对车把2.0版的支持。 HandlebarsHelper v2.0 +支持此功能。作为一个突破性的变化,它意味着2.0+不能与Ember.JS< v1.9和把手< 2.0。

它最初可能起作用的原因是因为在调试模板中通常只是将未注入的页面注入到页面中。

简单的解决方法是使用HandlebarsHelper v1.1(https://www.nuget.org/packages/HandlebarsHelper/1.1.0

答案 1 :(得分:0)

问题是我使用的Handlebars Helper版本只支持把手2.x.在Nuget中找到了问题并将其更改为其他版本,现在一切正常。感谢您的评论。