2013-05-22 53 views
0

我上的在線/離線應用程序的工作,我已經注意到了這一點:骨幹collection.get()不恢復模型的方法

我在我的收藏取回我的下線從localStorage的檢索。 (每次用戶在線登錄,我都會通過從服務器上檢索到的附加數據保存他)

如果同一用戶現在嘗試離線登錄,我檢查該運算符是否與我的集合中的任何運算符相匹配,如果匹配條目,我返回運營商比賽。

問題是,我從collection.get(#id)獲得的運算符沒有來自骨幹運算符模型的任何方法。

前糾正我的代碼一直在尋找這樣的:

if(this.isLocalValidOperator(operator)){ 
    var operatorMatch = this.get(operator.get('id')); 
    cb(operatorMatch); 
} 

我校,現在它的工作

if(this.isLocalValidOperator(operator)){ 
    var operatorMatch = this.get(operator.get('id')); 
    // must add additional attributes from the match, then return the operator created with new Operator(someAttributes) 
    operator.set({ 
    isSuperadmin: operatorMatch.get('isSuperadmin'), 
    isModerator: operatorMatch.get('isModerator'), 
    firstname: operatorMatch.get('firstname'), 
    lastname: operatorMatch.get('lastname') 
    }); 
    cb(operator); 
} 

我在做什麼錯?

+0

運算符和operatorMatch是不同的對象嗎?你爲什麼期望他們具有相同的屬性? –

+0

他們是同一個對象。因爲operatorMatch是operatorCollection的一個條目,它是一個運算符集合^^, – BigDong

+0

不,'b = collection.get(a.get('id'))'只意味着'b.id === a.id'。 jsfiddle.net或jsbin.com上的函數演示可能有助於澄清事情。 –

回答

0

如果有其他人遇到這種或類似的丟失方法問題......我從localStorage恢復時丟失了方法,但屬性數據仍然存在。問題是,在收集我缺少的屬性:

model: ModelName

後,我認爲包括,方法仍然在頁面重新加載完整。