我想保存一条记录并添加到emberjs中的现有列表中。 我使用两种形式来模拟具有相同属性的多个模型。但主要关注的是第二个有书的人。
我使用books: store.find('book',{})
我真的不知道空对象是什么,但它阻止了书记录出现在列表中。我只想在保存后 。
是否可以根据发布的数据设置mockjax的响应,所以我不必使用硬编码的JSON?
答案 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');
});
}
}
});