0
我有一個對象數組,我使用模板顯示。該模板包含一個按鈕取決於另一個陣列中是否存在該對象的顏色,改變:挖掘樣式綁定不更新修改底層數據
HTML代碼:
<button type="button" class="btn btn-default productButton" data-bind="click: $root.selectForCompare, style: { color: $root.isSelectedForCompare($data) ? 'blue' : 'black' }">
<span class="glyphicon glyphicon-duplicate"></span><br />Compare
</button>
視圖模型的代碼:
self.isSelectedForCompare = function (product) {
return indexOfProduct(self.compareItems(), product) !== -1;
};
self.selectForCompare = function (product) {
var i = indexOfProduct(self.compareItems(), product);
if(i === -1){
self.compareItems().push(product);
} else {
self.compareItems().splice(i,1);
}
};
如果用戶點擊按鈕,該項目將被添加或刪除第二個數組(取決於它是否已經存在於該數組中)。
當頁面正確渲染時,會爲每個對象調用isSelectedForCompare(product)
函數,這會導致顯示正確的顏色。問題是,當用戶點擊按鈕(並且顏色應該改變)時,不會再次調用isSelectedForCompare
來計算新顏色,並且按鈕不會改變。
單擊該按鈕可修改用於計算isSelectedForCompare(product)
的數組,但看起來Knockout看不到更新樣式綁定的原因。