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

时间:2014-03-12 16:19:08

标签: javascript knockout.js

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

如何在选择更改时获得模型更新?

感谢您的帮助。

修改

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

1 个答案:

答案 0 :(得分:1)

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

从官方KnockoutJS网站查看此示例代码,看起来像您要执行的操作:Cart editor example