我正在为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'

由于我无法弄清楚引擎盖下面发生了什么,因此在这里几乎是所有智慧的结尾。

最佳答案

我曾经在同一位置上,因为商店的方法(createRecorddeleteRecordfind等)与适配器的方法之间的概念差异在可用文档中似乎并没有真正阐明。

至于updateRecord,商店没有一个。要进行更新,您只需.set Model中的值并运行App.store.commit()即可。这将称为适配器的updateRecord

关于javascript - 即使实现了updateRecord函数,Ember Data Adapter引发也没有方法 'updateRecord'?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12517899/

10-12 13:45