5

次の例が機能しない理由を理解しようとしています。

observableArray は、( valueHasMutated() を使用して) 変更されたことを手動で通知されるまで更新されません。

オブザーバブルの要点は、ビューが変更されると自動的に更新されるということだと思いました。

<button type='button' id='add'>add</button>
<button type='button' id='mutated'>force update</button>
<div id="short_tasks" data-bind="foreach: list">
  <div data-bind="text: title"></div>
</div>

JS:

var ListTest = function () {

  this.list = ko.observableArray([{title: 'item1'}]);
}

var viewModel = new ListTest();
ko.applyBindings(viewModel);

$('#add').click(function () {
  viewModel.list().push({title: 'new item'});
});

$('#mutated').click(function() {
  viewModel.list.valueHasMutated();
});

jsFiddle: http://jsfiddle.net/InsaneWookie/HFgbR/

4

1 に答える 1

9

observableArray を直接呼び出すとpush、アイテムが基になる配列にプッシュされ、サブスクライバーに通知されます。

viewModel.list.push({title: 'new item'});
于 2013-01-06T03:47:35.207 に答える