我正在努力为员工建立一个简单的平台,让他们互相反馈。我正在使用ember-data(来自beta分支)。
模型:
App.Employee = DS.Model.extend({
name: DS.attr()
})
App.Feedback = DS.Model.extend({
text: DS.attr(),
employee: DS.belongsTo('employee', {async: true})
})
路由器(简称):
App.Router.map(function(){
this.resource('profile', {path: 'profile/profile_id'})
})
App.ProfileRoute = Ember.Route.extend({
model: function(params){
return this.store.find('employee', params.profile_id);
}
})
数据:
App.Employee.reopenClass({
FIXTURES: [
{ id: 1, name: 'Trek'},
{ id: 2, name: 'Tom'}
]
});
App.Feedback.reopenClass({
FIXTURES: [
{ id: 1, text: 'Topic1', employee: 1},
{ id: 2, text: 'Topic2', employee: 2},
{ id: 3, text: 'Topic3', employee: 1},
{ id: 4, text: 'Topic4', employee: 2}
]
});
我无法获得要在模板profile
中显示的反馈列表。
模板:
{{#each feedback in model.feedback}}
{{feedback.text}}
{{/each}}
我无法弄明白,我做错了什么。
我应该在feedbacks: DS.hasMany('feedback')
下指定App.Employee
吗?或者我应该通过控制器这样做吗?
答案 0 :(得分:1)
路由器描述中存在拼写错误(&39; profile_id'之前错过冒号):
App.Router.map(function() {
this.resource('profile', {path: 'profile/:profile_id'})
})
是的,您必须描述员工和反馈模型之间的一对多关系,如果您想要访问'反馈'员工模型列表。
<强>更新强> 如果要将反馈模型与Employee分离,可以将它们之间的关系从模型移动到控制器。
看起来像是:
App.ProfileController = Em.ObjectController.extend({
feedbackList: function() {
return this.store.find('feedback', { employee: this.get('model.id') });
}.property('model.id')
});
在模板中使用该字段(feedbackList
):
{{#each feedback in feedbackList}}
{{feedback.text}}
{{/each}}