我目前正在使用Yeoman Ember Generator构建一个ember应用程序。
这是我的模板文件夹结构如下:
template
|---requisitions
|---draft.hbs
|---pending.hbs
|---waiting.hbs
requisitions.hbs
app.hbs
application.hbs
这是我的router.js
Metabuyer.Router.map(function () {
this.route('app');
this.resource('requisitions', function(){
this.resource('draft');
this.resource('pending');
this.resource('waiting');
});
});
在我的DS.Store中,我有一个工作正常的申请模型。
Metabuyer.RequisitionsRoute = Ember.Route.extend({
model: function () {
return this.store.findAll('requisition');
}
});
草稿,待处理和等待路线共享相同的申请模型,但根据需要对其进行过滤,如下所示
Metabuyer.DraftRoute = Ember.Route.extend({
model: function(params){
var filterResult = this.store.filter('requisition', function(requisition){
return requisition.get('state') === 'draft';
});
console.log(test);
return filterResult;
});
}
});
我的问题是。
当我在我的路由器中使用this.resource('draft')
时,我的页面(空白页面)中没有呈现任何内容,但在我的控制台中,正在返回过滤的对象。
如果我使用this.route('draft')
页面已呈现,但页面内容未被过滤,或者我应该说,我的Metabuyer.DraftRoute
未被调用。
非常感谢你的帮助,:'(
答案 0 :(得分:3)
http://emberjs.com/guides/routing/defining-your-routes/
嵌套在资源下的路由采用资源名称及其名称作为路由名称。
父路线也需要索引路线。
导航到/requistions
加载RequesitionsRoute
和RequisitionsIndexRoute
,您需要在RequisitionsIndexRoute
上设置模型并使用RequisitionsIndexController
等。您需要将requisitions.hbs
重命名为index.hbs
并将其移至申请目录。
您还需要为您的草稿路线对象名称添加前缀,以使DraftRoute
变为RequisitionsDraftRoute
,对于控制器,视图等也是如此。