我有一個保存在本地存儲,其中每個保存的搜索表示爲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