0

我想保存一条记录并添加到 emberjs 中的现有列表中。我使用两种形式来模拟具有相同属性的多个模型。但主要关注的是第二个有书的。

http://jsbin.com/pexolude/46

我使用books: store.find('book',{})我真的不知道空对象是什么的地方,但它会阻止书籍记录出现在列表中。我只想在保存后拥有它。

是否可以根据发布的数据设置 mockjax 的响应,所以我不必使用硬编码的 JSON?

4

1 回答 1

2

Ember-form 似乎无法在其下方处理切换模型。当你这样做时,store.find('foo',{})你是在欺骗 Ember 通过查询进行查找。当它通过查询找到时,它只包括集合中结果中返回的记录。当您这样做时find('foo'),它会返回一个实时集合,该集合会在从存储中添加或删除任何记录时更新。您可以进行查找,然后toArray避免将其变为实时集合。然后您可以手动将记录添加到集合中,并用新记录替换当前正在编辑的模型。不幸的是,如前所述,Ember-forms 不会更新绑定并继续使用相同的记录。

App.IndexRoute = Ember.Route.extend({
    model: function() {
        var store = this.store;
        return store.find('book').then(function(books){
          return {
            books: books.toArray(),
            book:store.createRecord('book'),
            person: store.createRecord('person'),
            category: [{id:1,"name":"Fantasy"},{id:2,"name":"Drama"}]
          }
        });
    } 
});

App.IndexController = Ember.Controller.extend({
  actions: {
    some_action: function() {
      var self = this;
      this.get('model.book').save().then(function(record){
        var newRecord = self.store.createRecord('book');
        self.get('model.books').pushObject(record);
        self.set('model.book', newRecord);
        console.log(newRecord);
      }, function(error){
          console.log('fail');
      });


    }
  }
});

http://jsbin.com/pexolude/48/edit

于 2014-06-13T01:55:46.120 回答