1

接收數據我的問題是我有一個視圖和utils函數,我試圖與模型數據連接。從函數中使用_.clone(this.model.attributes)

在我看來,我有一個功能:

getCalculatedData: function() { 
    var calculatedData = utils.calculateAmounts(_.clone(this.model.attributes)) 
}, 

這使用鍵/值對象檢索我的模型數據。現在在我的utils函數中,我想檢索這些數據,以便我可以使用計算。所以我想做出一個功能,這是否:

calculatedAmounts: function() { 
    //retrieve data from that 
}, 

我如何檢索這些值。可以說,名字,姓氏和狀態都是在我看來正在檢索的模型中。我是否可以創建一個可變哈希值,如下所示:

calculatedAmounts: function() { 
    firstname : this.model.get('firstname'); 
    //etc 
}, 

如何從該對象中檢索值?

感謝

回答

1

我不知道完全明白你的問題,但在你的calculatedAmounts方法,你爲什麼不使用你過去了,你叫getCalculatedData方法中的變量?

您的代碼應該是這樣的:

getCalculatedData: function() { 
    var calculatedData = utils.calculateAmounts(this.model) 
}, 

calculatedAmounts: function(myModel) { 
    firstname : myModel.get('firstname'); 
    //etc 
}, 

另外,如果你要修改你的模型calculatedAmounts和不希望這些修改到calculatedAmounts範圍外後視鏡,你應該深複製你的模型對象。
一個常見的方法是使用jQuery的extend()方法。它看起來像:

calculatedAmounts: function(myModel) { 
    var deepCopiedModel = $.extend(true, {}, myModel); 
    firstname : deepCopiedModel.get('firstname'); 
    //etc 
}, 


編輯:
此外,避免將this.model.attributescalculatedAmounts()方法,如果你想使用get()方法吧。
this.model.attributes是一個Object對象,而不是一個Backbone.Model對象。

.get()如果傳遞this.model.attributes作爲一個參數是對象原型的方法的一部分,而不是Backbone.Model的原型的方法部分,你會調用。

+0

謝謝你的幫助。實際上我使用克隆的原因是我沒有編輯我的模型中的數據。關注點分離。但這有幫助。謝謝 – hiquetj

相關問題