我有一個dom-repeat
模板,它生成錶行,其中一個行單元格包含一個按鈕,我想要在行值具有特定值時禁用。所以,我的分量有這個代碼,它使用一個計算結合設置按鈕的disabled
屬性的值:聚合物計算綁定不會得到重新計算更新
<template is="dom-repeat" items="{{list}}" as="ticket">
<tr class$="{{ticket.status}}">
<td class="actions">
<paper-icon-button icon="add" on-tap="incTickets"
disabled="{{noAvailableTickets(ticket)}}">
</paper-icon-button>
</td>
<td>[[ticket.amount]]</td>
<td>[[ticket.event.title]]</td>
</tr>
</template>
而在我的代碼,我有這樣的方法:
noAvailableTickets : function(ticket) {
return ticket.event.available_tickets <= 0;
}
我可以看到,計算的綁定方法在列表首次創建時調用,每個項目一次。
後來,當我更新的項目,如:
this.set('list.' + ind + '.amount', newamount);
的計算綁定不會recalcuated,並且該方法不再調用,即使我能看到的值實際上在ticket.amount
顯示在改變模板。
的Polymer Data Binding entry in the developer's guide是這樣說的有關計算綁定:
的[...]屬性綁定到的
computeFullName
的返回值,這是重新計算時第一個或最後一個變化。 [first
和last
是聲明的參數爲computeFullName
]
所以假設下計算出的結合是不知道的對象的值,其amount
屬性以及如何其他邏輯使用之間的相關性的此更新available_tickets
屬性,我試圖添加notifyPath
命令與全更新的對象,像這樣:
this.notifyPath('list.' + displayId, ticket);
但似乎沒有任何效果。我錯過了什麼?
我知道這已被回答,但你有沒有考慮過使用'this.push('path',value)'而不是'this.set'? – Alan
'push'添加到數組中,但我不想添加其他項目,只需更新現有項目即可。 – Guss