2013-03-01 12 views
6

Dla mojej aplikacji EmberJS prekompiluję wszystkie moje szablony kierownicy, więc są one ładowane jako proste pliki JavaScript.EmberJS - zarejestruj prekompilowany szablon kierownicy

Problem polega na tym, że te wstępnie skompilowane szablony nie trafiają do kontenera Embera, tak jak myślałem, że to zrobią - podczas określania szablonu dla mojego widoku pojawia się następujący błąd.

Uncaught Error: assertion failed: You specified the templateName "application" for <MyApp.ApplicationView:ember164>, but it did not exist. 

Oto mój kod widoku.

window.MyApp.ApplicationView = Ember.View.extend({ 
    templateName: 'application' 
}); 

Przeszedłem przez wykonanie i zobaczyłem, że widoki nie istnieją w pojemniku Embera. Czy jest coś specjalnego, co muszę zrobić, aby zarejestrować wstępnie skompilowane szablony z kontenerem? Jeśli tak to jak?

Edytowanie: I've been kompilowanie szablony z pakietem npm kierownicy.

+1

Co używasz do wstępnego kompilowania szablonów? – mavilein

+0

Czy wstrzykujesz szablony przed załadowaniem aplikacji? Oto [skrzypce] (http://jsfiddle.net/schawaska/Xsbhk/), które pokazuje, gdzie należy załadować wstępnie. – MilkyWayJoe

+1

Właśnie korzystałem z pakietu kierownicy npm. Czy jest specjalny ember, którego potrzebuję użyć? –

Odpowiedz

0

natomiast KMP kompilator ręcznej kompilacji rzeczywiście je poprawnie kompiluje, nadal musisz zarejestrować je w Ember, aby ładowały się poprawnie. Możesz wykonać jedną z następujących czynności:

  • Ręcznie ładuj je za pomocą Ember.TEMPLATES ['sometemplate'] = SZABLON KOMBEDZONY. Działa to, ale staje się czymś w rodzaju bólu.
  • Użyj specjalnego kompilatora takiego jak npm ember-precompile, który skompiluje je w taki sposób, że skompilowane szablony zostaną automatycznie zarejestrowane w kontenerze szablonu Ember.
3

Szablony są spojrzał na Ember.TEMPLATES (który jest tylko hash z nazwą szablonu jako klucz)

Więc kiedy Twój przykład ApplicationView jest wykonywany będzie wyglądać na szablonie w Ember.TEMPLATES['application']

+1

Tak, wiem o tym - pytam, co muszę zrobić, aby załadować skompilowane szablony do tego kontenera. Oni się tam nie dostają! –

+0

Musisz ręcznie wprowadzić je w ramach procesu wstępnej kompilacji. – chrixian

0

Jeśli wolisz rozwiązanie Ruby/Gwardia opartego, sprawdź moją istotę tutaj: https://gist.github.com/perlun/5286391

Używaj go tak od Guardfile:

guard 'ember_handlebars', 
    :input => 'app/handlebars_templates', 
    :output => 'app/handlebars_compiled', 
    :remove_prefix => 'app/handlebars_templates/' do 
    watch(%r{app/handlebars_templates/(.+\.handlebars)}) 
end 

`` `