0

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

我有一个关键字模型。在显示关键字集合时,我想要读取的路径/keywords。访问单个关键字时,我希望读取路径/keyword/:KEYWORD_ID。按照惯例,Ember 希望您执行以下操作……</p>

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

    }

});

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

4

1 回答 1

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

    }

});
于 2013-03-15T15:41:55.577 回答