pushobject不是一个函数emberjs

时间:2017-09-23 14:47:46

标签: ember.js

当我将对象推送到模型时,我遇到了一个与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);
  },
}

现在我不确定是什么问题,但是我试图将书模型推入集合中,但是,我得到一个问题,因为控制台日志表明pushObject不是函数。我已经像其他问题一样更新了我的Environment.js,但这仍然是一个问题。

收集模型

// 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})
});

2 个答案:

答案 0 :(得分:2)

你有一个错字。您正在推送实际模型而不是books hasMany关系:

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

答案 1 :(得分:1)

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

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