将数据保存到api时遇到此错误
Uncaught Error: Assertion Failed: Cannot delegate set('firstName', a) to the 'content' property of object proxy <>: its 'content' is undefined
下面是我的代码
import Ember from 'ember';
export default Ember.ObjectController.extend({
isValid: Ember.computed(
'email',
'firstName',
'lastName',
'twitter',
function() {
return !Ember.isEmpty(this.get('email')) &&
!Ember.isEmpty(this.get('firstName')) &&
!Ember.isEmpty(this.get('lastName')) &&
!Ember.isEmpty(this.get('twitter'));
}
),
actions:{
save: function() {
if (this.get('isValid')) {
var _this = this;
this.get('model').save().then(function(friend) {
_this.transitionToRoute('friends.show', friend);
});
} else {
this.set('errorMessage', 'You have to fill all the fields');
}
},
cancel: function() {
this.transitionToRoute('friends');
}
}
});
答案 0 :(得分:3)
不要使用ObjectController。使用简单的Ember.Controller.extend。
答案 1 :(得分:0)
我在ember-cli-101 book上看到了这一点。我自己遇到了同样的问题。您可能没有在路线中正确设置模型属性。根据该书,错误发生在edit
或new
路线中。
如果您的router.js
看起来像这样:
...
Router.map(function() {
this.resource('friends', function() {
this.route('new');
this.route('show', { path: ':friend_id' });
this.route('edit', { path: ':friend_id/edit' });
});
});
...
friends/index
路由需要设置model
属性:
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.find('friend');
},
});
并且friends/new
路由需要以不同的方式设置model
:
从'余烬'中导入Ember;
export default Ember.Route.extend({
model: function() {
return this.store.createRecord('friend');
},
});
对于不熟悉本书的人(如上所述),问题来自书中的代码,这就是我引用它的原因。在大多数情况下,如果您遇到此问题,可能是因为您忘记了或未在适当的路径中正确设置模型属性。