Ember.js createRecord可能没有触发

时间:2012-07-25 21:15:18

标签: javascript ember.js local-storage ember-data

我有一个应用程序在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等映射到一堆get /设置与localStorage一起使用的方法(松散地基于a github fork of ember-data)。适配器似乎适用于某些基本测试,特别是当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框架,因此欢迎任何关于代码风格,结构和任何其他内容的评论。

1 个答案:

答案 0 :(得分:0)

Ember Data不会更改控制器上的createRecord,因此它的行为应该不同。过去可能存在与此相关的事情,但事实并非如此。