knockoutjs数据绑定问题

时间:2014-07-14 13:08:23

标签: jquery knockout.js

我正在尝试通过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。请帮忙。我可以使用触发器吗?

1 个答案:

答案 0 :(得分:0)

复选框的绑定只是一个T / F值......只需将其设置为SelAttributeList即可获得T / F值....您需要将其设置为更类似于SelAttributeList的内容.indexOf(featureValue)&gt; -1 ...假设此变量是featureValues的列表,至少。

相关问题