0

我正在为我的一个项目使用 angularjs。我正在尝试实现过滤功能。

我正在使用下面的代码构建过滤器复选框

<div class="checkbox" ng-repeat="incidentType in keywords.incidentType">
<label><input type="checkbox" value={{incidentType}}>{{incidentType}}</label>
</div>

结果如下图所示

在此处输入图像描述

在选中或取消选中复选框时,我需要创建一个如下所示的对象。基于这个 json 对象,我将向服务器发送请求以获取匹配的数据。

{
    "application": [
        "Athena",
        "EWS"
    ],
    "incidentType": [
        "Publishing Failure",
        "Security Failure"
    ]
}

关于如何在 angularjs 中实现这一点的任何想法。任何帮助深表感谢。

4

1 回答 1

3

对于这样的事情,您可以使用您想要发送的对象作为模型,然后将其绑定到您的 ng-repeat 中的数据。我让你先在这里检查一下:http: //jsfiddle.net/DotDotDot/gcEJH/
我已经获取了你的示例代码,我刚刚添加了一个带有对象($scope.checked)的控制器,我在每个复选框中将它用于 ng-model

$scope.checked={application:{}, incidentType:{}};  

然后,在 HTML

<div class="checkbox" ng-repeat="incidentType in keywords.incidentType">
<label><input type="checkbox" ng-model='checked.incidentType[incidentType]' ng-true-    value='{{incidentType}}'>{{incidentType}}</label>
</div>

ng-model 部分告诉 angular 将值放在对象的incidentType 部分中,在该值对应的 kay 下。这不会给你完全相同的对象,但你会得到类似的东西:

{
"application": {
    "Athena": false,
    "EWS": true,
    "EWindows": true
},
"incidentType": {
    "Publishing Failure": true,
    "Security Failure": true
}
}

这实际上非常接近,您可以从中创建您的请求(或轻松地重新创建您想要的相同对象)

希望这有帮助,玩得开心

=)

于 2013-08-22T18:42:32.483 回答