我有以下路线:
this.resource('categories', function() {
this.route('add');
this.resource('category', {path: ':category_id'}, function() {
this.route('edit', {path: "/edit"});
this.resource('products', function(){
this.route('add');
this.resource('product', {path: ':product_id'});
});
});
});
除编辑路线外,一切正常。出于某种奇怪的原因,我的模型没有初始化。
App.CategoryRoute = Ember.Route.extend({
model: function (params) {
console.log(this.store.getById('category', params.category_id)); // Returns what I want
return this.store.getById('category', params.category_id);
},
//other stuff
});
经过几次试验/错误,我发现我的CategoryEditRoute覆盖了我的模型。我对这个陈述并不是100%肯定,但它看起来像。如果我尝试在这条路线上设置我的模型,我无法访问我的参数...没有我的参数我不知道要加载什么模型!!!
App.CategoryEditRoute = Ember.Route.extend({
model: function (params) {
console.log(params); // Result in: Object {}
return this.store.getById('category', params.category_id); // Undefined
},
// Other stuff
)}
感谢您抽出宝贵时间提供帮助。
答案 0 :(得分:1)
App.CategoryEditRoute = Ember.Route.extend({
model: function() {
return this.modelFor('category')
},
});
这将使用在类别资源中解析的模型。
另请注意,例如,Ember中的路由与Rails中的路由不同。如果视图是嵌套的,通常会嵌套路径。这样做(并且实际上可以使事情变得更容易和更简单)没有任何问题:
this.route('categoryEdit', {path: ':category_id/edit'})