2013-03-01 4 views
6

Per la mia app EmberJS, ho precompilato tutti i miei modelli di manubri, quindi vengono caricati come file Javascript semplici.EmberJS - registro manubrio precompilato modello

Il problema è che questi modelli precompilati non si stanno facendo strada nel contenitore Ember come pensavo che lo sarebbero - Ottengo il seguente errore quando specifico un modello per la mia vista.

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

Ecco il mio codice di visualizzazione.

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

Sono passato attraverso l'esecuzione e ho visto che le viste non esistono nel contenitore Ember. C'è qualcosa di speciale che devo fare per registrare i modelli precompilati con il contenitore? Se é cosi, come?

Modifica: ho compilato i modelli con il pacchetto npm di handlebars.

+1

Cosa stai usando per precompilare i tuoi modelli? – mavilein

+0

E, stai iniettando i modelli prima che la tua app venga caricata? Ecco un [fiddle] (http://jsfiddle.net/schawaska/Xsbhk/) che mostra dove dovresti pre-caricare. – MilkyWayJoe

+1

Ho appena usato il pacchetto manubri npm. C'è uno speciale ember che devo usare ?? –

risposta

0

Mentre il NPM il compilatore di manubri li compila in modo corretto, è comunque necessario registrarli con Ember affinché possano essere caricati correttamente. È possibile eseguire una delle seguenti operazioni:

  • Caricalo manualmente con Ember.TEMPLATES ['sometemplate'] = MODULO COMPILATO. Funziona ma diventa qualcosa di un dolore.
  • Utilizzare un compilatore speciale come npm ember-precompile, che verrà compilato in modo tale che i modelli compilati vengano automaticamente registrati nel contenitore di template di Ember.
3

I modelli sono guardato su Ember.TEMPLATES (che è solo un hash con il nome del modello come chiave)

Così, quando viene eseguito il vostro esempio ApplicationView cercherà per il modello nella Ember.TEMPLATES['application']

+1

Sì, lo so - chiedo che cosa devo fare per caricare i modelli compilati in quel contenitore. Non stanno entrando lì! –

+0

È necessario inserirli manualmente come parte del processo di pre-compilazione. – chrixian

0

Se si preferisce una soluzione Rubino/Guardia-based, controllare il mio succo qui: https://gist.github.com/perlun/5286391

usare in questo modo dal 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 

`` `