【发布时间】:2017-12-06 15:22:01
【问题描述】:
我有一个关于 Knockout 中已检查绑定的 checkedValue 的问题 (http://knockoutjs.com/documentation/checked-binding.html)
基本上,看看这个小提琴http://jsfiddle.net/jo9dfykt/1/。 为什么如果我单击“添加项目”按钮选择了正确的选择,但如果我单击第二个按钮“添加项目二”这不成功? viewModel 中的 addItem 和 addItem2 方法有什么区别?
然后,为什么 with selectedValue 什么都不显示?
我的目标是将单选按钮列表绑定到 observableArray 并将整个对象保存到 observable 中。但我想设置单选按钮的初始值而不在 observableArray 上搜索它。
Javascript
var viewModel = {
items: ko.observableArray([
{ itemName: 'Choice 1' },
{ itemName: 'Choice 2' }
]),
chosenItem: ko.observable(),
addItem: function() {
this.chosenItem(this.items()[0]);
},
addItem2: function() {
this.chosenItem({itemName: 'Choice 2'});
}
};
viewModel.chosenItem.subscribe(function(newValue){
console.log(newValue.itemName);
}),
ko.applyBindings(viewModel);
HTML
<!-- ko foreach: items -->
<input type="radio" data-bind="checkedValue: $data, checked: $root.chosenItem" />
<span data-bind="text: itemName"></span>
<!-- /ko -->
<input type="button" data-bind="click: addItem" value="Add Item"/>
<input type="button" data-bind="click: addItem2" value="Add Item Two"/>
<div>Selected Value: <span data-bind="text: chosenItem.itemName"></span></div>
【问题讨论】:
标签: javascript html knockout.js checked