我有一个保存在本地存储,其中每个保存的搜索表示为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框架,所以任何其他的代码风格,结构和任何一般的意见都是值得欢迎的。
事实证明,我做错了。我在读取的示例应用程序名为'createRecord()',然而在控制台中尝试一些实验,我必须传入模型本身:'createRecord(,)'。 –
Adam
2012-07-26 08:35:24