【问题标题】:Backbone - iterating over objects in an array attributeBackbone - 遍历数组属性中的对象
【发布时间】:2012-08-17 02:22:09
【问题描述】:

我有一个带有两个阵列的模型,明亮的和正常的。每个数组都包含表示颜色的对象。我想在模型中实现一种方法,允许设置这种颜色的一些属性(例如色调)。所以我写了这个:

setHue: function(hue) {
    _.each([this.get('brigth'), this.get('normal')], function(colors) {
        _.each(colors, function(color) {
            color.setHue(hue + this.getHue());
        });
    });
},

我认为这很清楚 - 我尝试遍历 brightnormal 数组中的每种颜色。它不会更新这些数组中的颜色。 _.each 里面的这个颜色似乎有了新的值,但看起来它只是颜色的副本,而不是参考。有谁知道如何做我想做的事?我的意思是_.each 循环,我不想搞砸forlength 和索引。

【问题讨论】:

  • 是的!谢谢! “最黑暗的地方在烛台下”。 normal 在循环中记录了我正确的值,毕竟我正在检查 bright

标签: javascript arrays backbone.js reference get


【解决方案1】:

Bright 拼写错误。你进入了光明。

【讨论】:

    【解决方案2】:

    嗯,我认为你这里有一个普遍的问题。让我们尝试一个例子:

    this.get('brigth')
    

    将返回一个数组,而不是模型,对吗?

    如果是这样,

    _.each([this.get('brigth'), this.get('normal')], function(colors) { ...
    

    将遍历数组数组,即颜色将获得一个数组,而不是模型或集合。因此,颜色将是数组的一项(我假设是一个字符串)。因此颜色没有方法 setHue。

    此外,保罗也是对的 this.getHue() 这不是指模型,因为您要切换上下文两次(每个每个循环一次)。 我希望我没有完全弄错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 2017-02-18
      • 1970-01-01
      相关资源
      最近更新 更多