我的问题是,当我通过视图模型设置选中复选框的值时,直到我单击另一个复选框时,这些复选框才被选中。
HTML格式:
<input type="checkbox" data-bind="checked: selectedTags, attr: {value: '1', id: '1'}" /> 1
<input type="checkbox" data-bind="checked: selectedTags, attr: {value: '2', id: '2'}" /> 2
<input type="checkbox" data-bind="checked: selectedTags, attr: {value: '3', id: '3'}" /> 3
<button data-bind="click: alertMe">Click Me</button>
Java脚本:
function ViewModel () {
var self = this;
self.selectedTags = ko.observableArray([]);
// I added 1 to the selected tags array
self.selectedTags().push('1');
self.alertMe = function () {
alert(self.selectedTags());
};
}
2条答案
按热度按时间u5rb5r591#
向
observableArray
添加项的正确方法是直接在observableArray
上调用push
(这样KO会收到数组被更改的通知):它本身并不能解决你的问题,因为你是用
attr
绑定来设置复选框的value
,而Knockout(3.0之前的版本)按顺序触发绑定。所以你的checked
绑定首先被执行,它没有找到值,所以它不能设置你的复选框。您可以升级到knockout 3.0来解决此问题,或者更改绑定的顺序:
演示JSFiddle。
dwthyt8l2#
仅编辑HTML:
http://jsfiddle.net/eHj5X/6/