【发布时间】:2015-01-17 11:17:59
【问题描述】:
我的主从页面布局如图所示。我通过#/masters/:master_id 应用程序网址访问此页面。
路由a定义如下:
App.Router.map(function() {
this.resource('masters', { path: '/masters' }, function() {
this.route('detail', { path: '/:master_id' });
});
});
App.MastersRoute = Ember.Route.extend({
model: function() {
return App.DataStore.getData('/api/masters'); //returns Promise!
},
setupController: function(controller, model) {
controller.set("content", model);
}
});
App.MastersDetailRoute = Ember.Route.extend({
model: function(params) {
return this.modelFor("masters").find(function(item) {
return item.get("id") == params.master_id;
});
}
});
模板:
<script type="text/x-handlebars-template" data-template-name="masters">
<div id="masters-grid">
{{#each master in model}}
<div {{action "show" master}}>
{{master.name}}
</div>
{{/each}}
</div>
<div id="detail">
{{outlet}}
</div>
</script>
<script type="text/x-handlebars-template" data-template-name="masters/detail">
{{model.name}} <br />
{{model.age}} <br />
{{model.address}} <br />
</script>
当点击网格中的母版时,我想在详细信息插座中显示它们的详细信息,并且我不想在更改母版选择时从 API 重新加载所有母版。
我对@987654325@ 的模型有疑问,因为this.modelFor("masters") 返回undefined。我认为,这是由于在 model 钩子中返回 Promise 引起的。任何想法或解决方法如何从“子路由”model 钩子中的 Masters 模型或控制器访问一项?
【问题讨论】: