我有一个ko.computed
函数,用于确定ko.observableArray()
中的当前项是否有效。
但是,不会对数组中的每个项执行计算函数
JavaScript的:
var viewModel = {
items: ko.observableArray(["value 1", "value 2", "value 3"]),
};
viewModel.isValid = ko.computed(function() {
// doesn't gets executed for each item
console.log(this);
return true;
}, viewModel);
ko.applyBindings(viewModel);
HTML:
<script type="text/html" id="item-template">
<span data-bind="css: { 'valid': $root.isValid }, text: $data"></span>
</script>
<!-- ko template: { foreach: items, name: 'item-template' } --><!-- /ko -->
答案 0 :(得分:3)
ko.computed
不会自动浏览您的所有商品。你需要自己做这件事:
viewModel.isValid = ko.computed(function() {
ko.utils.arrayForEach(this.items(), function(item) {
console.log(item);
});
return true;
}, viewModel);
演示JSFiddle。
ko.computed
仅为您提供重新计算其值的功能,如果其中一个依赖的可观察更改。