È possibile cercare la fonte Ember.JS per tutti questi cercando: Ember.Handlebars.registerHelper('?'
. Ad esempio, per trovare la parte in cui si definisce template
, cercare: Ember.Handlebars.registerHelper ('template'
{{template}}
è simile al {{partial}}
, ma sembra per modelli che si definiscono nel Ember.TEMPLATES
hash dal codice sorgente si può vedere un esempio:.. Ember.TEMPLATES["my_cool_template"] = Ember.Handlebars.compile('<b>{{user}}</b>');
e quindi siamo in grado di rendere in questo modo
ho sentito un sussurro che {{template}}
è @deprecated, ma posso trovo dove ho trovato quell'informazione al momento. Tuttavia, vale la pena ricordare che non mi sono mai trovato a usare questo. Preferisco invece lo {{partial}}
.
Edit: Sembra come se non è @deprecated come di 3df5ddfd4f
. Errore mio!
{{parziale}}
Questo è diverso l'approccio {{render}}
dal fatto che la controller
e view
vengono ereditate dal contesto che ha chiamato. Ad esempio, se sei nello UserRoute
e carichi in un partial nel tuo modello utente, allora lo UserView
e lo saranno entrambi passati al tuo parziale, in modo che possano accedere esattamente alle stesse informazioni del suo attuale genitore.
I nomi parziali, una volta definiti, iniziano con un carattere di sottolineatura. Ad esempio, un partial Profile
avrà lo data-template-name
di: data-template-name="_profile"
ma verrà inserito nella vista come {{partial "profile"}}
.
{{}} presa
Probabilmente troverete voi stessi usando questo uno molto. Viene utilizzato prevalentemente nei casi in cui lo outlet
cambia frequentemente, in base alle interazioni dell'utente. Passando a (this.transitionTo
/{{#linkTo}}
) un'altra pagina, Ember inserisce la vista nello {{outlet}}
e alle relative controller
e view
.
Per fare un esempio, se si sta transizione in /#/animali domestici poi, per impostazione predefinita, Ember caricherà i PetsView
nel {{outlet}}
, e collegare il PetsController
, tutto questo dopo l'inizializzazione del PetsRoute
di prendere istruzioni prima inizializzare la vista e trovare il controller.
{{renda}}
Questa è una miscela di un {{outlet}}
e {{partial}}
. Viene utilizzato per pagine statiche che non si spostano per altre pagine (come fa outlet
), ma non eredita il controller e la vista (come fa partial
).
È meglio con un esempio. Diciamo che hai una navigazione. Di solito avrai solo una navigazione e non cambierà per un'altra, ma vuoi che la navigazione abbia il proprio controller e la sua vista, e non essere ereditata dal contesto (probabilmente ApplicationRoute
). Pertanto, quando si inserisce la navigazione ({{render "navigation"}}
), Ember allegherà App.NavigationController
e App.NavigationView
.
Sommario
template
: consulta un hash globale e inserisce la vista quando lo trova (possibilmente presto essere @deprecated);
partial
: utilizzato per suddividere viste complesse e ereditare il controller/vista dal genitore (se ci si trova nello UserController
, anche il parziale avrà accesso a questo e alla vista associata).
outlet
: il più utilizzato e consente di passare rapidamente alle pagine per altre pagine. Controller pertinente/vista allegata.
render
: simile a una presa, ma viene utilizzato per le pagine che sono persistenti in tutta l'intera applicazione. Presume il controller/vista pertinente e non li eredita.
Ho spiegato bene?
Giusto per chiarire:
- parziale: Regolatore Ereditato, vista ereditato, non commutabile;
- Uscita: controller rilevante, vista pertinente, commutabile;
- Render: controller rilevante, vista pertinente, non commutabile;
risposta impressionante, vote up! Questo in realtà conferma quello che stavo assumendo le diverse parole chiave. Sarebbe bello se qualcuno potesse confermare @deprecated. – polyclick
Il mio piacere! È utile anche per me, soprattutto perché ho appena compilato l'ultima versione di Ember dopo un 'git pull', e ho messo insieme un JSFiddle per dimostrare tutto: http://jsfiddle.net/HvXNh/ Sembra come se '{{render}}' non è ** @ deprecato ** come pensavo. Il JSFiddle dovrebbe aiutarti a capire le differenze. – Wildhoney
Wow, questo ha aumentato la mia conoscenza di brace di circa. 30%. –