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