請參考以下提琴:http://www.senchafiddle.com/#xXQlp 確保打開控制檯以查看顯示錯誤數據的輸出。Sencha touch 2型號關聯存儲不正確的數據存儲
在這裏您可以看到我創建了2個學生模型,每個模型都有一個0+獎勵模型的列表。戴夫獲得了2個相當不錯的獎項 - 毫不奇怪:) - 而查茲已經增加了2項不太好的獎項。問題在於測井表明Chaz最終獲得了4個獎項(2個好的和2個壞的)。
這個小提琴是一個大得多的應用程序的嚴重沸騰,但我已經孤立這個作爲我一直有一個巨大的問題的起源 - 我甚至找到了一個'修復'它。如果你從小提琴上取消了第55和56行的註釋並再次運行(一定要清除你的本地存儲!),你會發現Chaz只需要2個獎項。
由於我希望很明顯的原因,這不是一個我很滿意的解決方案。還有其他一些我做錯了與協會導致Chaz獲得全部4個獎項。 ...當然?
乾杯!
更新:接受下面的答案,刪除autoLoad:true修復了問題。我想AUTOLOAD不過,所以我實現在學生模型的初始化如下:
for (var i=0, l=this.associations.all.length; i<l; i++) {
var assoc = this.associations.all[i];
if (assoc._type == "hasmany") {
var assocName = assoc._name;
var getterName = 'get' + assocName.charAt(0).toUpperCase() + assocName.slice(1);
this[getterName] = function(assocName) {
var self = this;
return function() {
var store = self[assocName]();
if (!store.isLoaded()) {
store.load();
}
return store;
}
}.call(this, assocName)
}
}
這增加了對學生有各自的hasMany關聯一個getter,並確保該協會商店在返回之前加載它。即我現在可以使用student1.getAwards()而不是student1.awards()來訪問student1的獎勵,並且知道獎勵將會被加載,這將自動適用於我添加到模型中的任何其他hasMany關聯。
我希望這有助於一些讀者。
感謝發現,它解決了這一問題,但沒有自動加載是一個煩惱,所以我做了我已經添加到我的問題的工作。乾杯。 –