2016-03-10 51 views
2

我有如下所示的聚合物屬性。陣列更新後聚合物dom-repeat無法更新

gamma:{type:Array,observe:true,notify:true,value:[{「id」:1,「value」:[「w」]}, {「id」:2, 「:[」w「]}]}

而我使用此屬性來顯示模板中使用divs的行和列。

<template is="dom-repeat" items="{{gamma}}" id="maindiv"> 
      <div class="layout__row"> 
      <template is="dom-repeat" items="{{item.value}}"> 
       <div class="layout__block" id$="{{item}}"> 
        <button class="btn btn--primary margins">Add {{item}}  Button</button> 
       </div> 
      </template> 
      </div> 
      </template> 

如果我修改伽馬特性在第一對象添加一個更多的價值,並呼籲notifysplices,根據其數量不渲染的div。我從添加列方法調用渲染函數。

我有另一種叫做addrows的方法,它有這個代碼。

addRows: function(){ 
        this.push("gamma", {"id":this.rows.length+1,"value":  ["w"]}); 
        this.$.maindiv.render(); 
        this.$.rowdiv.render(); 
       } 

我在這裏失蹤。

我發現解決方案,子屬性或嵌套數組更改應該像下面。

this.push([「gamma」,i,「value」],「a」);

信貸從polymer.slack.com

+0

的文檔「數據綁定/綁定到結構化數據」是小紙條上的「設置API」 ....如果你沒有得到的觀測類型和你期望的監聽器響應,你可以嘗試使用set api當你改變valueOf(伽瑪) –

+0

我試着設置設置,這是我如何使用,糾正我,如果我的語法是錯誤的。 this.set('gamma.i.value',this.gamma [i] .value); –

回答

0

這有可能是你的gamma財產的定義是造成問題去阿瑟·伊文思。根據聚合物文檔

如果默認值應該是實例唯一的數組或對象,請在函數內部創建數組或對象。有關更多信息,請參閱Configuring default property values

所以,你的定義應該是:

gamma: { 
    type: Array, 
    observe: true, 
    notify: true, 
    value: function() { 
     return [{"id": 1, "value": ["w"]}, {"id": 2, "value": ["w"]}] 
    } 
}