ember js - 未捕获错误:断言失败:无法委托集合

时间:2014-09-21 05:08:22

标签: ember.js ember-cli

将数据保存到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');
        }

    }

});

2 个答案:

答案 0 :(得分:3)

不要使用ObjectController。使用简单的Ember.Controller.extend。

答案 1 :(得分:0)

我在ember-cli-101 book上看到了这一点。我自己遇到了同样的问题。您可能没有在路线中正确设置模型属性。根据该书,错误发生在editnew路线中。

如果您的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');
  },
});

对于不熟悉本书的人(如上所述),问题来自书中的代码,这就是我引用它的原因。在大多数情况下,如果您遇到此问题,可能是因为您忘记了或未在适当的路径中正确设置模型属性。