2014-05-01 210 views
0

我有一個很大的2維數組,其中我更新了數值並且其他聚合物元素沒有得到變化的通知。我有一個想法,爲什麼,我認爲我的解決方案是強制進行財產變更事件,但我不確定。如何強制propertyChange事件

對於這樣一個模型元素項...

<polymer-element name="my-model" attributes="rows"> 
... 
<script> 
    ... 
    this.rows[0][0] = newValue; 
</script> 

我發現,當我在這樣的視圖元素使用它...

<my-view rows="{{model.rows}}"></my-view> 

,其視圖的實現是這樣的...

<polymer-element name="my-view" attributes="rows"> 
<template> 
    <template repeat="{{row in rows}}"> 
    <template repeat="{{col, i in cols}}"> 
     {{row[i]}} 
    </template> 
    </template> 
</template> 

我的看法並沒有得到更新,除非我重置模型中的數組值

this.rows = [] 

我可以以某種方式強制一個屬性更改事件。我想...

this.rows = this.rows 

..和...

this.notifyPropertyChanged('rows', this.rows, this.rows) 

和沒有運氣。任何想法,將不勝感激。謝謝!

回答

2

您的第二個模板存在錯誤。由於您使用的命名範圍的,你的第二個模板必須{{col, i in row}}

<template repeat="{{row in rows}}"> 
    <template repeat="{{col, i in row}}"> 

這爲我工作:http://jsbin.com/sidagomu/1/edit

(點擊元素 - >數據更新 - >模板重新繪製)

+0

工作。謝謝。注意:我正在迭代「cols」,它的長度與「row」的長度相同,所以在編程方面,當我最終調用「row [i]」時應該沒有關係。但是因爲我沒有使用「排」,所以聚合物不會產生自動觀察結合。我希望現在不要再犯這個錯誤,因爲我看到了這個問題。 – lazieburd

+0

我認爲這可能是一個錯誤。如果您有: 'this.cols = [「One」,「Two」,「Three」];' 然後'cols'在範圍內的模板和'{{col,i cols}} '應該工作。我看不出爲什麼'row [i]'在一種情況下更新,而不是在另一種情況下更新。 事實上,即使您使用'{{col,我在[1,2,3]}}'中,綁定也不會更新。有什麼可疑的。 也就是說,使用'{{col in row}}和'{{col}}'很簡單,並且應該可靠地工作。 – DocDude

相關問題