我正在使用Ember.js支持的Rails for API工作在我的第一个Web应用程序中。 我有以下嵌套资源:当参数更改时,Ember.js路由不会执行新请求
this.resource('selection_processes', function() {
this.resource('selection_process', { path: '/:selection_process_id' }, function() {
this.resource('candidate', { path: '/candidates/:candidate_id' });
});
})
所以,当我访问selection_processes/1
它让所有的候选人。这没问题,但问题是当我点击另一个选择过程链接Ember不会执行新的请求,在我的模板中不呈现任何数据。顺便说一下,API正在返回正确的对象。
我得到这个工作的唯一方法是在我的序列化程序中包含所有对象,使得Ember在一个请求中获取整个嵌套资源的所有数据。但这似乎是一种懒惰的做法和“沉重的”。
顺便说一句,这里是我的路线:
Safira.SelectionProcessesRoute = Ember.Route.extend({
model: function() {
return this.store.find('selection_process');
}
});
Safira.SelectionProcessRoute = Ember.Route.extend({
model: function (params) {
return this.store.find('selection_process', params.selection_process_id);
}
});
Safira.CandidateRoute = Ember.Route.extend({
model: function (params) {
return this.store.find('candidate', params.candidate_id);
}
});
UPDATE
这里是我的模型
Safira.SelectionProcess = DS.Model.extend({
beginDate : DS.attr('date'),
endDate : DS.attr('date'),
title : DS.attr('string'),
description : DS.attr('string'),
steps : DS.hasMany('Safira.Step', {async: true})
});
Safira.Step = DS.Model.extend({
realization: DS.attr('date'),
title: DS.attr('string'),
candidates: DS.hasMany('Safira.Candidate', {async: true}),
selection_process : DS.belongsTo('Safira.SelectionProcess')
});
Safira.Candidate = DS.Model.extend({
name : DS.attr('string'),
email : DS.attr('string'),
confirmation_token : DS.attr('string'),
step : DS.belongsTo('Safira.Step')
});
你能展示你的模型吗? – claptimes
当然,我刚刚更新。 –
您能否确认您的服务器正在返回候选ID?渲染时,你是在做什么像'{{#each steps}}'然后'{{#each candidates}}'?它渲染“steps”吗? – claptimes