KO中的綁定是雙向的;如果更新視圖模型,UI將會更新。如果更新綁定控件,則視圖模型會更新。
您還可以創建計算屬性,每當引用的任何觀察對象被更新時都會更新。
function ViewModel(data) {
data = data || {};
this.checkboxes = ko.observableArray(
ko.utils.arrayMap(data.checkboxes, function (title) {
return new CheckboxModel(title);
})
);
this.checkedCheckboxes = ko.computed(function() {
return ko.utils.arrayFilter(this.checkboxes(), function (cb) {
return cb.checked();
});
}, this);
}
function CheckboxModel(title) {
this.title = ko.observable(title);
this.checked = ko.observable(false);
this.number = ko.observable(1);
}
$(function() {
ko.applyBindings(new ViewModel({
checkboxes: [ 'Champion', 'Reserve champion',
'1st', '2nd', '3rd', '4th', '5th', '6th',
'7th', '8th', '9th', '10th', 'Other']
}));
});
<div data-bind="foreach: checkboxes" id="cblist">
<label data-bind="visible: checked">
<input type="number" data-bind="value: number"/>
<span data-bind="text: title"></span>
</label>
<label data-bind="visible: !checked()">
<input type="checkbox" data-bind="checked: checked"/>
<span data-bind="text: title"></span>
</label>
<br/>
</div>
http://jsfiddle.net/MizardX/zHTRP/
我不知道下投票是什麼,但如果你需要我做出更一般的,我可以...... – Bjorn2Run
我認爲它非常糟糕的形式向下投票沒有理由!對我來說這似乎是一個很好的問題。 –