Emberjs保存记录Mockjax

时间:2014-06-12 22:13:24

标签: ember.js mockjax

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

http://jsbin.com/pexolude/46

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

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

1 个答案:

答案 0 :(得分: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