将ember-data记录标记为已存在

时间:2014-09-21 19:47:33

标签: ember.js ember-data

我有一个独特的情况,我为ember-data写了一个缓存层,将记录序列化到localstorage。当我将缓存反序列化为ember-data模型时,我使用this.store.createRecord('model_name', cacheData);。我正在缓存的这些记录在服务器上具有现有值。这对我很有用,直到我想要save()记录。保存认为该记录是一个新的记录,即使它有一个" id"属性。调用save()时,对我的应用程序服务器而不是PUT进行POST。有没有人知道在商店中标记记录的方法不是新的。

2 个答案:

答案 0 :(得分:4)

您应该使用store.push添加现有记录而不是store.createRecord

http://emberjs.com/api/data/classes/DS.Store.html#method_push

答案 1 :(得分:1)

我找不到任何正式的,但模型确实有isNew属性。由于这是一个只读属性,你不能直接设置它,但你可以在currentState对象上设置它,如下所示:

var model = this.store.createRecord('model_name', cacheData);
model.set('currentState.parentState.isNew', false);

model.get('isNew') // => false

我不能说这是否是最好的方法,但它应该做你所要求的。确保你有好的测试:)