我有一个计算函数,当选择选项改变时,它不会更新UI。但是如果我添加或删除一行就可以正常工作。
这是HTML:
<button data-bind="click: add">Add New</button>
<ul data-bind="foreach: items">
<li>
<label data-bind="text: name"></label>
<select data-bind="options: [1,2,3], value: val"> </select>
</li>
</ul>
TOTAL: <span data-bind="text: total"></span>
这就是JavaScritp:
function viewModel (initialItems) {
this.items = ko.observableArray(initialItems);
this.total = ko.computed(function () {
var total = 0;
for (var i = 0; i < this.items().length; i++)
total += this.items()[i].val;
return total;
}, this);
this.add = function() { this.items.push({name: "New", val: 1}); };
}
ko.applyBindings(new viewModel([{name: "Alpha", val: 2},
{name: "Beta", val: 3},
{name: "Gamma", val: 1}]));
这是小提琴:http://jsfiddle.net/waUE4/
如何在选择更改时获得模型更新?
感谢您的帮助。
修改
答案 0 :(得分:1)
val
属性未更新的原因是它未被声明为Observable
属性。
从官方KnockoutJS网站查看此示例代码,看起来像您要执行的操作:Cart editor example