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