次の js があるとします。
var vm = {
objects: ko.observable([]),
objectCount: ko.computed(function(){
return vm && vm.objects().length;
}),
add: function() {
var current = vm.objects();
current.push({});
console.log('current is', current);
vm.objects(current);
console.log("should recalculate here", vm.objectCount());
}
};
そして、次のhtml:
<ul data-bind="foreach: objects">
<li>
Object: <span data-bind="text: $index"></span>
</li>
</ul>
<button data-bind="click: add">Add Object</button>
<p>
Total number of objects:
<span data-bind="text: objectCount"></span>
</p>
オブジェクトを追加した後に objectCount() を呼び出すため、ドキュメントを読んで、その依存関係を再計算する必要があることを理解しています。代わりに、一度だけ実行して、関数を実行することさえないようです!