将项添加到observableArray不更新jQuery按钮单击视图

时间:2013-01-06 03:05:03

标签: jquery knockout.js

我正在尝试找出以下示例无效的原因。

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/

1 个答案:

答案 0 :(得分:9)

您需要直接在observableArray上调用push,它会将您的项目推送到基础数组并通知任何订阅者。

viewModel.list.push({title: 'new item'});