2013-04-01 105 views
1

我試圖用guard-handlebars來預編譯我的把手模板(爲了避免把它們都放在我的index.html中,這感覺有點不理想......)。預編譯的效果很好,和灰燼接受的事實模板接受,當我把它注射到Ember.TEMPLATES這樣的:如何使用emberjs 1.0.0-rc.2預編譯的句柄模板?

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

但是,這是行不通的。我得到這樣一個例外:

Could not find property 'outlet' 

...在Handlebars helperMissing方法。看來Ember使用默認Handlebars的一些猴子補丁,據說增加了對{{outlet}}助手等的支持。但我的模板似乎並沒有使用這些插座。你如何解決這個問題?

我正在使用通過NPM安裝的handlebars編譯器來編譯模板。

回答

0

guard-handlebars寶石是相當過時的,它不是設計與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 

當燼的一個新的版本出來它可能需要幾天才能通過生態系統。當發生這種情況時,你可能會發現燼源寶石很有用。看到亞歷克斯的博客文章的更多細節:

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

+0

感謝您的提示。我最終爲此寫了自己的防守,這感覺很合理,因爲我沒有使用耙子也沒有咕嚕(但是更加衛冕)。這是我的要點:https://gist.github.com/perlun/5286391 –

+0

有道理。如果你得到它的工作將是很好的發佈,我敢打賭,其他人會發現它有幫助。我在那裏發表了一些評論,也更新了我的答案...... –