2012-07-25 68 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,所以它不應該有任何不同。過去有可能與此有關,但肯定不是這樣。

相關問題