鉴于我有以下
模型
var Artistecontract = ErrorManaged.extend({
name: DS.attr('string'),
email: DS.attr('string'),
signatoryEmail: DS.attr('string'),
address: DS.attr('string'),
engagements: DS.hasMany('engagement', { async: true }),
artisteproject: DS.belongsTo('artisteproject', { async: true }),
});
控制器
var ArtistecontractEngagementsController = Ember.ObjectController.extend({
availableEngagements: function () {
var engagements = this.get('engagements');
return this.get('artisteproject.engagements').reject(function (engagement) {
return engagements.contains(engagement)
});
}.property('artisteproject.engagements', 'engagements')
});
路线
var ArtistecontractEngagementRoute = AuthenticatedRoute.extend({
model: function(params) {
return this.store.find('artistecontract', params.id);
},
actions: {
include: function (artisteproject, engagement) {
artisteproject.get('engagements').then(function (engagements) {
engagements.pushObject(engagement);
artisteproject.save();
});
}
}
});
当我访问availableEngagements属性时,我会收到
Cannot read property 'reject' of undefined
我想要做的是从艺术家项目中获取一系列尚未属于参与属性的参与。
我做错了什么?或者有更好的方法来做到这一点。
答案 0 :(得分:2)
您正在.reject
上调用this.get('artisteproject.engagements')
,但错误消息告诉您this.get('artisteproject.engagements')
未定义,这意味着
this.get('artisteproject')
未定义,或this.get('artisteproject.engagements')
未定义。根据您发布的代码,您从未在控制器上定义artisteproject
属性。在Ember中,从路由的model
挂钩返回的任何内容都将设置为关联控制器的model
属性。因此,在您的控制器代码中,请尝试以下方法:
this.get('model.engagements').reject...
答案 1 :(得分:0)
我必须让订婚成为合同承诺的一部分
_this.store.find('artistecontract', _this.get('id')).then(function (artistecontract) {
return Ember.RSVP.all([
artistecontract.get('engagements'),
artistecontract.get('artisteproject')
]).then(function(){
return artistecontract;
});
})