我从路线访问动态网段时遇到了一些奇怪的行为。
我有一个关键字模型。在显示关键字集合时,我希望路径为/keywords
。访问单个关键字时,我希望路径为/keyword/:KEYWORD_ID
。按照惯例,Ember希望你做以下事情......
this.resource('keywords', { path: '/keywords' }, function() {
this.route('new', { path: '/new' });
this.resource('keyword', { path: '/keyword/:keyword_id' }, function() {
this.route('edit');
});
});
为了达到上述目的,我正在做以下事情......
this.resource('keywords', { path: '/keywords' }, function() {
this.route('new', { path: '/new' });
});
this.resource('keyword', { path: '/keyword/:keyword_id' }, function() {
this.route('edit');
});
但是,当使用第二种方法时,KeywordIndex的路由(即单个关键字对象),params
对象为空,屏幕上的内容为空。
App.KeywordIndexRoute = Ember.Route.extend({
model: function(params) {
return App.Keyword.find(params.keyword_id);
},
renderTemplate: function(controller, model) {
this.render({outlet: 'page'});
}
});
有没有人遇到过这个问题?有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
问题解决了。问题出在我们针对此特定对象的API中。考虑到这种路由模式的人最好的方法如下......
this.resource('keywords', { path: '/keywords' }, function() {
this.route('new', { path: '/new' });
});
this.resource('keyword', { path: '/keyword/:keyword_id' }, function() {
this.route('edit');
});
然后您可以像这样访问控制器中的模型......
App.KeywordIndexRoute = Ember.Route.extend({
model: function(params) {
return this.modelFor("keyword");
},
renderTemplate: function(controller, model) {
this.render({outlet: 'page'});
}
});