我正在为Ember数据滚动自己的适配器。长话短说,当我调用App.store.updateRecord(App.Model,id)时,我收到此错误:
Uncaught TypeError: Object <DS.Store:ember195> has no method 'updateRecord'
即使实现了updateRecord功能。
下面的示例代码(为了清楚起见,请注意,我将所有函数的日志参数记录到控制台,而不是按照他们的想法去做)
// declare application namespace
App = Ember.Application.create();
// instantiate store
App.store = DS.Store.create({
revision: 2,
adapter: DS.LocalStorageAdapter.create(),
});
// implement adapter
DS.LocalStorageAdapter = DS.Adapter.extend({
createRecord: function(store, type, model) {
console.log('createRecord: ', type, model);
},
updateRecord: function(store, type, model) {
console.log('updateRecord: ', type, model);
},
find: function(store, type, id) {
console.log('find: ', type, id);
},
localStorage: {
set: function( ModelTyp, value ){},
get: function( ModelType ){},
}
});
// create model
App.StyleData = DS.Model.extend({
css_name: DS.attr('string', {key: 'css_name'}),
storageID: DS.attr('number', {defaultValue: 0, key: 'storageID'}),
});
// ==========================================================================
// Test Application
// ==========================================================================
App.store.createRecord(App.StyleData, { css_name: 'name' });
App.store.commit()
//console: createRecord: App.StyleData, model
App.store.find(App.StyleData, 0)
//console: find: App.StyleData, 0
App.store.updateRecord(App.StyleData, { css_name: 'new name' });
//console: Uncaught TypeError: Object <DS.Store:ember195> has no method 'updateRecord'
在我的智慧结束时,因为我无法弄清楚引擎盖下发生了什么。
答案 0 :(得分:4)
我在某一点上的位置相同,因为商店的方法(createRecord
,deleteRecord
,find
等)与适配器的方法之间的概念差异似乎不大在可用的文档中明确说明。
至于updateRecord
,商店没有。要进行更新,您只需.set
Model
中的值App.store.commit()
并运行updateRecord
。这将调用适配器的{{1}}。