当选择选项改变时,Knockoutjs模型不会更新

Knockoutjs model does not update when select options change

本文关键字:模型 更新 Knockoutjs 选择 选项 改变      更新时间:2023-09-26

我有一个计算函数,当选择选项改变时不更新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>

这是javascript:

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/

当选择更改时,我如何获得模型更新?

谢谢你的帮助。

编辑

工作版本:http://jsfiddle.net/fCE3a/1/

没有更新val属性的原因是它没有被声明为Observable属性。

从KnockoutJS官方网站查看这个示例代码,它看起来就像你想做的: