在Ember.js对象路由中访问动态段故障

时间:2013-03-13 16:09:11

标签: ember.js

我从路线访问动态网段时遇到了一些奇怪的行为。

我有一个关键字模型。在显示关键字集合时,我希望路径为/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'});

    }

});

有没有人遇到过这个问题?有没有更好的方法来解决这个问题?

1 个答案:

答案 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'});

    }

});