2014-03-12 209 views
0

我有一個計算的函數,當選擇選項更改時不更新UI。但如果我添加或刪除一行,則工作正常。當選擇選項更改時,Knockoutjs模型不會更新

這是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

之所以不更新val特性是它不聲明爲Observable財產。

查看官方KnockoutJS網站的示例代碼,它看起來像你想要做的:Cart editor example

相關問題