<div id="distance-filter" data-bind="foreach: model.distance">
<p ><input type="radio" value="value" name="distance" data-bind="checked: model.check"> <span data-bind="text:model.check"></span></p>
</div>
已检查的数据绑定无效 我的模型如下
var model= {
filter_list: ko.observableArray([{filter:'restaurant'},{filter:'hospital'},{filter:'atm'},{filter:'cafe'}]),
fav_list: ko.observableArray([{fav:'Pizzahut'},{fav:'Dominos'},{fav:'Barista'}]),
distance: ko.observableArray([{value: 500},{value: 1000},{value: 5000},{value: 10000}]),
check: ko.observable(1000)
};
答案 0 :(得分:1)
问题是您没有设置每个项目的正确值。相反,它们都具有值"value"
。
取出
value="value"
并将您的数据绑定更改为
data-bind="checked: model.check, checkedValue: value"
答案 1 :(得分:0)
这可能不是你最终想做的事情,但它至少让检查做了一些有趣的事情。
虽然你可以引用model
,因为它是一个全局变量,你不应该。 (它不应该是全局变量。)而不是model.distance
,只需在distance
绑定中使用foreach
。在foreach中,上下文发生了变化。要引用checked
(未在每个distance
对象中定义),您需要使用$parent.checked
。您可以直接使用value
,因为上下文是当前的distance
对象。
您可能想要做的是让每个按钮都标有自己的value
,然后在foreach之外打印checked
的值以指示其当前值。如上所述,checked
的值打印在每个按钮旁边,当您更改选择了哪个按钮时,它们都会改变。
另外:checked
的值应该是一个字符串,因为input
项的值是字符串。
var model = {
distance: ko.observableArray([{
value: 500
}, {
value: 1000
}, {
value: 5000
}, {
value: 10000
}]),
check: ko.observable('1000')
};
ko.applyBindings(model);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div id="distance-filter" data-bind="foreach: distance">
<p>
<input type="radio" name="distance" data-bind="attr: { value: value }, checked: $parent.check">
<span data-bind="text:$parent.check"></span>
</p>
</div>
&#13;