Ember.js createRecord可能未启动

Ember.js createRecord possibly not firing

本文关键字:启动 js createRecord Ember      更新时间:2024-03-01

我有一个应用程序,它将用户的搜索条件保存在localStorage中,其中每个保存的搜索都表示为Ember.js模型的一个实例:

Checklist.SavedSearch = DS.Model.extend({
  id: DS.attr('string'),
  filters: DS.attr('string')
});

当按下"保存"按钮时,控制器会创建一个实例化的模型并为其创建一个记录:

Checklist.savedSearchController = Ember.ArrayController.create({
  [..]
  save: function(view) {
    var saved_seach = Checklist.SavedSearch.createRecord({
      id: 'abcd',
      filters: '<json>'
    });
    Checklist.local_store.commit();
  }
});

Checklist.local_store是我创建的一个适配器(这可能是问题的开始),它有一个基本接口,可以将createRecordupdateRecord等映射到一组使用localStorage的get/set方法(松散地基于成员数据的github分支)。对于一些基本测试,该适配器似乎工作得很好,尤其是findAll没有问题,并返回手动添加到localStorage的值。

以下是Checklist.local_store:中的相关方法

createRecord: function(store, type, model) {
  model.set('id', this.storage.generateId);
  var item = model.toJSON({associations: true});
  this.storage.setById(this.storage_method, type, id, item);
  store.didCreateRecord(model, item);
}

问题是,当控制器调用createRecord时,绝对不会发生任何事情。通过调试器运行它,并将其记录到控制台,似乎表明根本没有调用该方法。我想这是我对Ember.js应该如何工作的误解。我很感激你能解释为什么会发生这种事。

我来自ruby和php背景,可能愚蠢地直接进入了JS框架,所以欢迎对代码风格、结构和任何一般内容发表任何其他评论。

Ember Data不会更改控制器上的createRecord,因此其行为不会有任何不同。过去可能有与此相关的事情,但现在肯定不是这样了。