markAllCompletedは、例として計算されたものとして実装されていますか?チェックボックスがオンになっているバインディングは関数である必要があり、addItemでの使用法は通常の監視対象である必要があるようです。
本当に興味があります。BreezeとKnockoutに関しては、まだかなりおとなしいです...実際、これはBreezeの質問よりもKnockoutの質問である可能性があります...
(参考までに、関連するコードを以下に含めました)
答えが明白であると思うときに質問するのは嫌いですが、そうではありません。そして、私は尋ねることに抵抗できませんでした。
ありがとう!
function addItem() {
var item = dataservice.createTodo();
item.IsDone(vm.markAllCompleted());
item.Description(vm.newTodo());
item.CreatedAt(new Date());
if (item.entityAspect.validateEntity()) {
extendItem(item);
vm.items.push(item);
dataservice.saveChanges();
vm.newTodo("");
} else {
handleItemErrors(item);
}
}
vm.markAllCompleted = ko.computed({
read: function () {
var state = getStateOfItems();
return state.itemsLeftCount === 0 && vm.items().length > 0;
},
write: function (value) {
suspendItemSave = true;
vm.items().forEach(function (item) {
item.IsDone(value);
});
suspendItemSave = false;
dataservice.saveChanges();
}
<input id="markAll" type="checkbox" data-bind="checked: markAllCompleted">