我正在尝试通过CheckboxList的选中值绑定产品列表。我的代码是
<div data-bind="foreach: featureValueList">
<a href="#">
<input id="" type="checkbox" data-bind="checked: $root.SelAttributeList, attr: { value: $parent.featureId+'-'+featureValue }">
<span class="specal" data-bind="text: featureValue"></span></a>
</div>
vm用于上述绑定
{
"segmentId": "39",
"segmentName": "Lens system",
"featureList": [
{
"featureId": "48",
"featureName": "Digital zoom",
"featureValueList": [
{
"featureValue": "14",
"selected": false
},
{
"featureValue": "20",
"selected": false
},
{
"featureValue": "40",
"selected": false
}
]
}
]
},
{
"segmentId": "57",
"segmentName": "Picture quality",
"featureList": [
{
"featureId": "63",
"featureName": "Megapixel",
"featureValueList": [
{
"featureValue": "10",
"selected": false
},
{
"featureValue": "16",
"selected": false
}
]
}
]
},
{
"segmentId": "3149",
"segmentName": "Camera",
"featureList": [
{
"featureId": "5",
"featureName": "Processor clock speed",
"featureValueList": [
{
"featureValue": "1400",
"selected": false
}
]
}
]
}
服务器数据功能
self.ProductsList = ko.observableArray([]);
self.SelAttributeList = ko.observableArray([]);
$.ajax({
url: '/ServiceBridge.svc/GetProducts',
data: JSON.stringify({attributeValues: self.SelAttributeList()}),
contentType: "application/json; charset=utf-8",
dataType: "json",
type: 'POST',
success: function (data) {
$(JSON.parse(data.d)).each(function (index, element) {
self.ProductsList.push(element);
});
},
error: function (jxhr, msg, err) {
alert(msg + '' + err);
}
});
现在我无法根据复选框检查填写ProductsList。请帮忙。
编辑:上面的“featureValueList”绑定正确。首先加载上面的代码工作。选中复选框后,我想用服务器数据更新ProductsList。请帮忙。我可以使用触发器吗?
答案 0 :(得分:0)
复选框的绑定只是一个T / F值......只需将其设置为SelAttributeList即可获得T / F值....您需要将其设置为更类似于SelAttributeList的内容.indexOf(featureValue)&gt; -1 ...假设此变量是featureValues的列表,至少。