javascript - 使用 _.clone(this.model.attributes) 从函数中获取数据

标签 javascript jquery backbone.js model-view-controller marionette

我的问题是我有一个试图与模型数据连接的 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/

相关文章:

javascript - JavaScript 中最快的 MD5 实现

javascript - 仅当列表中添加了 ajax 请求时才调用 ajax 请求

javascript - 如何刷新 Backbone.js 中的 View /模板

javascript - 如何获得西方数字模式(用逗号分隔)

javascript - 当集合更改时更新主干 View

backbone.js - Backbone/Require Application 中共享对象的最佳实践

javascript - 如何在 dygraph 中设置多个 Y 轴?

javascript - javascript 中的内部 html 不工作

javascript - TypeError : element(. ..).then 不是 Protractor 3.2.1 中的函数

javascript - jquery 显示无不工作