Vamos começar com esta configuração básica.
App = Ember.Application.create();
App.Router.map(function() {
this.resource('bakery', {path:'/bakery'}, function() {
this.resource('goodies',{path:':bakery_name'})
})
});
App.BakeryRoute = Ember.Route.extend({
model: function() {
return {name:'Yummy Land'};
},
afterModel: function() {
this.transitionTo('goodies',this.model().name);
}
});
App.GoodiesRoute = Ember.Route.extend({
model: function() {
return [{name:'Eclair'},{name:'Donut'},{name:'Oatmeal Cookie'}];
}
});
Neste ponto, temos alguns dados e alguns recursos definidos.
Digamos que nosso modelo de ‘padaria’ tenha um campo de pesquisa e
queremos acessá-lo a partir de nosso controlador de ‘guloseimas’
<script type="text/x-handlebars" id="bakery">
At {{#link-to 'goodies' name}}"{{name}}" {{/link-to}}
<br/>
<!-- here is our search field -->
{{input type='text' value=searchText}}
{{outlet}}
</script>
<script type="text/x-handlebars" id="goodies">
You see the following goodies:
<ul>
{{#each item in model}}
<li>{{item.name}}</li>
{{/each}}
</ul>
</script>
Ember nos fornece um corpo docente chamado ‘necessidades’ que funciona como abaixo.
Quando outro controlador ‘padaria’ é referenciado de acordo com ‘necessidades’, ele se torna
acessível por meio do caminho do namespace ‘controllers.bakery’ e suas propriedades
ficam disponíveis internamente .
O corpo docente de ‘necessidades’ pode ser usado com observações.
App.BakeryController = Ember.ObjectController.extend({
})
App.GoodiesController = Ember.ArrayController.extend({
needs: "bakery",
searchFilter: function() {
Ember.Logger.debug("someone is looking for " + this.get("controllers.bakery.searchText"))
}.observes("controllers.bakery.searchText")
})