我的问题是我有一个试图与模型数据连接的 View 和实用程序函数。
在我看来;我有一个功能:
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
},
如何从该对象中检索值?
谢谢
最佳答案
我不确定是否完全理解您的问题,但是在您的 calculatedAmounts
方法中,为什么不使用在 getCalculatedData
中调用该方法时传递的变量?
您的代码将如下所示:
getCalculatedData: function() {
var calculatedData = utils.calculateAmounts(this.model)
},
calculatedAmounts: function(myModel) {
firstname : myModel.get('firstname');
//etc
},
此外,如果您要在 calculatedAmounts
中修改模型,并且不希望这些修改镜像到 calculatedAmounts
范围之外,则应该深度复制您的模型对象。
一种常见的方法是使用 extend()
jQuery 的方法。它看起来像:
calculatedAmounts: function(myModel) {
var deepCopiedModel = $.extend(true, {}, myModel);
firstname : deepCopiedModel.get('firstname');
//etc
},
编辑:
另外,如果您想在其中使用 get()
方法,请避免将 this.model.attributes
传递给您的 calculatedAmounts()
方法。< br/>
this.model.attributes
是一个 Object
对象,而不是 Backbone.Model
对象。
如果您将 this.model.attributes
作为参数传递,则将调用的 .get()
是对象原型(prototype)的方法部分,而不是方法部分Backbone.Model
的原型(prototype)。
关于javascript - 使用 _.clone(this.model.attributes) 从函数中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30941192/