pushobject 不是函数 emberjs

pushobject is not a function emberjs

当我将 object 推送到模型时,ember js 出现了一个奇怪的问题。这是我的代码:

// Environment.js
  EXTEND_PROTOTYPES: {
    // Prevent Ember Data from overriding Date.parse.
    Date: true,
    Array: true,
  }

Route.js

 model () {
  return Ember.RSVP.hash({
    newCollection: this.get('store').createRecord('collection'),
    book1: this.get('store').createRecord('book'),
    book2: this.get('store').createRecord('book')
  })
}

控制器

actions:{
  addCollection(model) {
    model.newCollection.pushObject(model.book1);
    model.newCollection.pushObject(model.book2);
  },
}

现在我不确定是什么问题,但我正在尝试将书籍模型推送到 collection,但是,我遇到了一个问题,因为控制台日志表明 pushObject 不是一个功能。我已经按照其他问题的建议更新了 Environment.js,但这仍然是一个问题。

Collection 型号

// collection Model
export default DS.Model.extend({
    name: DS.attr('string'),
    city: DS.attr('string'),
    books: DS.hasMany('book', { async: true })
});

图书模型

//book Model
export default DS.Model.extend({
    title: DS.attr('string'),
    description: DS.attr('string'),
    collection: DS.belongsTo('collection', {async: true})
});

你打错了。您正在推动实际模型而不是 books hasMany 关系:

actions: {
  addCollection(model) {
    model.newCollection.get('books').pushObject(model.book1);
    model.newCollection.get('books').pushObject(model.book2);
  },
}

您的问题是,newCollection 是一条 collection 记录。 所以你应该这样做:

model.newCollection.get('books').pushObject(model.book1);