2012-08-17 26 views
1

我有一個模型,有兩個數組,明亮和正常。每個數組都包含表示顏色的對象。我想在模型中實現一個允許設置這些顏色的一些屬性(例如色相)的方法。所以我寫了這一點:骨幹 - 迭代數組中的對象屬性

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

我認爲這是明確的 - 我試圖在這兩個brightnormal陣列每一種顏色迭代。而且它不會更新這些數組內的顏色。 _.each中的這種顏色似乎具有新的價值,但它看起來只是顏色的副本,而不是參考。有誰知道如何去做我想要的?我的意思是_.each循環,我不想搞亂for,length和索引。

+1

明亮拼寫錯誤。 – 2012-08-17 02:39:57

+1

是的!謝謝! 「最黑暗的地方是燭臺下」。 「正常」是在一個循環內記錄適當的值,畢竟我是在檢查'明亮'。 – ciembor 2012-08-17 02:58:46

回答

1

明亮拼錯。你輸入了brigth。

0

嗯,我想你在這裏有一個普遍的問題。讓我們嘗試用一個例子:

this.get('brigth') 

會返回一個數組,而不是一個模型,正確嗎?

如果是這樣,

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

將循環在數組的數組,即顏色將得到的陣列,而不是一個模型,也不是一個集合。因此,顏色將是一個數組的項目(我假設一個字符串)。因此顏色沒有方法setHue。

此外,保羅是正確的,以及 this.getHue() 這並不是指一個模式,因爲你是上下文切換兩次(一次爲每個每個迴路)。 我希望我在這裏沒有把它弄錯。