我有computed
,它基於observableArray
屬性headers
。另外我有用於添加和刪除多個headers
方法:如何在執行多個陣列推/取操作時計算暫時停止計算
function ViewModel() {
var self = this;
self.headers = ko.observableArray();
self.newHeaders = ko.computed(function() {
var countOfNew = 0;
ko.arrayForEach(self.headers(), function(header) {
if (!header.id) {
countOfNew++;
}
});
return countOfNew;
});
self.addHeaders = function(headers) {
ko.arrayForEach(headers, function(header) {
self.headers.push(header);
}
};
self.removeHeaders = function(headers) {
ko.arrayForEach(headers, function(header) {
self.headers.remove(header);
}
};
}
當我打電話addHeaders
或removeHeaders
,newHeaders
呼籲在headers
陣列的每個項目。有什麼解決方案如何暫停計算計算場? (有些像用戶ko.valueWillMutate
,ko.valueHasMutated
)。
謝謝,這個解決方案正是我需要的。 – alexmac
或者使用'push.apply' ...'this.children.push.apply(this.children,newChildren);'...哦,那個頁面確實提到了這個。 – MrYellow