2012-07-25 57 views
0

我有一个保存在本地存储,其中每个保存的搜索表示为Ember.js模型实例的用户的搜索标准的应用程序:Ember.js createRecord可能不费一枪

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是我创建了一个适配器(这是勿庸置疑哪里出了问题可能开始),有映射createRecord一个基本的接口, updateRecord等,以一堆获取/设置方法与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框架,所以任何其他的代码风格,结构和任何一般的意见都是值得欢迎的。

+0

事实证明,我做错了。我在读取的示例应用程序名为'createRecord()',然而在控制台中尝试一些实验,我必须传入模型本身:'createRecord()'。 – Adam 2012-07-26 08:35:24

回答

0

Ember Data在控制器上不会改变createRecord,所以它不应该有任何不同。过去有可能与此有关,但肯定不是这样。

相关问题