gpt4 book ai didi

ember.js - 为什么 Ember.js 中的嵌套资源不保留参数哈希?

转载 作者:行者123 更新时间:2023-12-02 18:23:24 25 4
gpt4 key购买 nike

假设有以下 Ember.js 应用程序(使用 Ember 1.0.0.rc.6.1 和 Ember Data 0.13):

App = Ember.Application.create({ LOG_TRANSITIONS: true });

App.Store = DS.Store.extend();

App.Router.map(function() {
this.resource('promotions', function() {
this.resource('promotion', { path: '/:promotion_id' }, function() {
this.resource('entrants', function() {
this.resource('entrant', { path: '/:entrant_id' });
});
});
});
});

App.PromotionRoute = Ember.Route.extend({
model: function() {
return { id: 1, name: 'My Promotion' };
}
});

App.EntrantsIndexRoute = Ember.Route.extend({
model: function(params) {
console.warn('EntrantsIndexRoute', '\nparams:', params, '\nparams.promotion_id:', params.promotion_id, '\narguments:', arguments);
console.log('params should be:', { promotion_id: 1 });
console.log('The queried URL should be:', '/entrants?promotion_id=1');
return App.Entrant.find({promotion_id: params.promotion_id});
}
});

App.Entrant = DS.Model.extend({
name: DS.attr('string')
});

如果您输入网址#/promotions/1/entrants,它应该是一个嵌套资源,则参数是一个空对象。我如何在那里访问 promotion_id?这里是JSFiddle,点击“Click me”后看一下控制台:http://jsfiddle.net/Kerrick/4GufZ/

最佳答案

虽然您无法访问父路由的动态段,但您仍然可以检索父路由的模型并获取其 ID,如下所示:

App.EntrantsIndexRoute = Ember.Route.extend({
model: function() {
var promotion_id = this.modelFor('promotion').id;
return App.Entrant.find({ promotion_id: promotion_id });
}
});

或者,如果促销和参与者之间存在多对关系,您甚至可以这样做:

App.EntrantsIndexRoute = Ember.Route.extend({
model: function() {
return this.modelFor('promotion').get('entrants');
}
});

关于ember.js - 为什么 Ember.js 中的嵌套资源不保留参数哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18065727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com