如何在emberjs 1.0.0-rc.2中使用预编译的把手模板?

时间:2013-04-01 16:31:21

标签: ember.js

我正在尝试使用guard-handlebars来预编译我的手柄模板(以避免在我的index.html中使用它们,这感觉有点不太理想......)。预编译效果很好,Ember接受了这样一个事实:当我将模板注入Ember.TEMPLATES时,模板会接受:

Ember.TEMPLATES['application'] = Handlebars.templates['application']

然而,它不起作用。我得到这样的例外:

Could not find property 'outlet'

...在Handlebars中的helperMissing方法。似乎Ember使用默认Handlebars的一些猴子修补程序,据说增加了对{{outlet}}助手和其他人的支持。但我的模板似乎没有使用这些插座。你是如何解决这个问题的?

我正在使用通过NPM安装的把手编译器来编译模板。

3 个答案:

答案 0 :(得分:0)

找到了一个重复的问题,其中包含建议的解决方案/解决方法:How can I consume handlebars command-line generated templates with Ember?

(简短摘要:是的,使用handlebars命令行程序进行预编译并不会立即生效,完全是因为我在原始问题中建议的原因)

答案 1 :(得分:0)

答案 2 :(得分:0)

guard-handlebars宝石已经过时了,它不适用于使用ember。

今天有几个选择。

例如,要使用理发器编译一个ember模板,请尝试以下方法:

compiled_template = Barber::Ember::FilePrecompiler.call(IO.read(file))
# now ruby variable compiled_template is a string like: "Ember.Handlebars.template(function(...));"

result = "Ember.TEMPLATES['#{name}'] = '#{compiled_template}';"
# now result is a JS string that sets Ember.TEMPLATES[name] to precompiled handlebars

当新版本的ember出现时,它可能需要几天的时间才能通过生态系统。当发生这种情况时,您可能会发现ember-source gem很有用。有关更多详细信息,请参阅Alex的博文:

http://alexmatchneer.com/blog/2013/02/27/gemifying-ember-dot-js-slash-handlebars-dot-js-slash-etc-dot-js/