使用 _.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 原型的方法部分。