无法设置我的模型

时间:2013-12-03 19:17:48

标签: ember.js ember-data

我有以下路线:

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
)}

感谢您抽出宝贵时间提供帮助。

1 个答案:

答案 0 :(得分:1)

App.CategoryEditRoute = Ember.Route.extend({
    model: function() {
        return this.modelFor('category')    
    }, 
});

这将使用在类别资源中解析的模型。

另请注意,例如,Ember中的路由与Rails中的路由不同。如果视图是嵌套的,通常会嵌套路径。这样做(并且实际上可以使事情变得更容易和更简单)没有任何问题:

this.route('categoryEdit', {path: ':category_id/edit'})