我在没有敲击检查绑定的情况下挣扎。请参阅此fiddle example。
我的两个问题是:
一般来说,我有几个来自数据库的查找列表,它们是地图数组。例如,在小提琴示例中,我有一个国家列表:
[
{countryName: "UK", countryPopulation: 650000000},
{countryName: "USA", countryPopulation: 1700000000},
{countryName: "Canada", countryPopulation: 320000000}
]
对于我所拥有的几乎所有表单输入,我都希望“选定值”成为丰富的JS对象。在小提琴的单选按钮示例中,我希望selectedCustomerType为:
{label: 'Acquiring', value: 'A'}
而不只是:
'A'
初始化单选按钮似乎也不起作用。我可以使用第15行的JS代码使视图正确:
self.selectedCustomerType = ko.observable(self.availableCustomerTypes()[0] .value);
(很遗憾,我必须使用self.availableCustomerTypes()[0] .value初始化,而不是仅仅使用self.availableCustomerTypes()[0]。)
但即使视图看起来正确,html绑定也没有显示任何内容(HTML的第21行)。
<div>
You have chosen customer type
<span data-bind:"value: selectedCustomerType()"></span>.
</div>
但是在输出中不显示selectedCustomerType。如何正确初始化selectedCustomerType?
答案 0 :(得分:3)
使用KO 3.0,您现在可以使用checkedValue
绑定以及元素的checked binding to specify specifically what the value will be (rather than setting the
value`属性并将其值用作字符串。)
所以,你现在可以做到:
data-bind='checkedValue: $data, checked: $root.selectedCustomerType'
通过此更改,您现在可以使用self.availableCustomerTypes()[0]
初始化它。
更新了小提琴:http://jsfiddle.net/rniemeyer/8GJpF/
有关其他信息,请在此处查找checkedValue
:http://knockoutjs.com/documentation/checked-binding.html