在Ember-Data中创建临时非持久对象

时间:2012-04-03 11:50:22

标签: ember.js ember-data

我想使用ember-data创建一个对象,但我不想保存它直到我调用commit。我怎样才能实现这种行为?

3 个答案:

答案 0 :(得分:4)

您可以在transaction.js中使用transaction定义的transaction_test.js和相应的测试。

查看示例here

App.store = DS.Store.create(...);

App.User = DS.Model.extend({
    name: DS.attr('string')
});

var transaction = App.store.transaction();
transaction.createRecord(App.User, {
    name: 'tobias'
});

App.store.commit(); // does not invoke commit
transaction.commit(); // commit on store is invoked​

答案 1 :(得分:1)

改为调用createModel!

示例:

// This is a persisted object (will be saved upon commit)
var persisted = App.store.createRecord(App.Person,  { name: "Brohuda" });

// This one is not associated to a store so it will not
var notPersisted = App.store.createModel(App.Person,  { name: "Yehuda" });

我为你做了http://jsfiddle.net/Qpkz5/269/

答案 2 :(得分:0)

您可以使用_createApp.MyModel._create() - 它会将模型与自己的状态管理器相关联,因此App.store.commit()将不会执行任何操作。

但是,_create是“私有的”。我认为这个用例需要有一个公共方法。