使用 _.clone(this.model.attributes) 从函数中获取数据
Taking in data from a function using _.clone(this.model.attributes)
我的问题是我有一个视图和实用程序函数正在尝试连接模型数据。
在我看来;我有一个功能:
getCalculatedData: function() {
var calculatedData = utils.calculateAmounts(_.clone(this.model.attributes))
},
这会使用 key/value 对象检索我的模型数据。现在在我的 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
范围之外,您应该深度复制您的模型对象。
一种常用的方法是使用 jQuery 的 extend()
方法。它看起来像:
calculatedAmounts: function(myModel) {
var deepCopiedModel = $.extend(true, {}, myModel);
firstname : deepCopiedModel.get('firstname');
//etc
},
编辑:
此外,如果您想在其中使用 get()
方法,请避免将 this.model.attributes
传递给您的 calculatedAmounts()
方法。
this.model.attributes
是一个 Object
对象,而不是 Backbone.Model
对象。
如果将 this.model.attributes
作为参数传递,您将调用的 .get()
是对象原型的方法部分,而不是 Backbone.Model
原型的方法部分。
我的问题是我有一个视图和实用程序函数正在尝试连接模型数据。
在我看来;我有一个功能:
getCalculatedData: function() {
var calculatedData = utils.calculateAmounts(_.clone(this.model.attributes))
},
这会使用 key/value 对象检索我的模型数据。现在在我的 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
范围之外,您应该深度复制您的模型对象。
一种常用的方法是使用 jQuery 的 extend()
方法。它看起来像:
calculatedAmounts: function(myModel) {
var deepCopiedModel = $.extend(true, {}, myModel);
firstname : deepCopiedModel.get('firstname');
//etc
},
编辑:
此外,如果您想在其中使用 get()
方法,请避免将 this.model.attributes
传递给您的 calculatedAmounts()
方法。
this.model.attributes
是一个 Object
对象,而不是 Backbone.Model
对象。
如果将 this.model.attributes
作为参数传递,您将调用的 .get()
是对象原型的方法部分,而不是 Backbone.Model
原型的方法部分。