Javascript angularjs多重复选框筛选
我想筛选多个复选框,但一次只能选择一个。不知道如何构造它,以便我可以过滤所有值 我已经创建了一个,任何帮助都是感激的Javascript angularjs多重复选框筛选,javascript,jquery,angularjs,checkbox,Javascript,Jquery,Angularjs,Checkbox,我想筛选多个复选框,但一次只能选择一个。不知道如何构造它,以便我可以过滤所有值 我已经创建了一个,任何帮助都是感激的 <input type="checkbox" id="cb" ng-model="word" ng-true-value="has kitchen" ng-false-value=""> Jimi无法同时选择两个复选框的主要问题是,它们都绑定到同一个模型属性 如前所述,过滤器还存在一些其他声明性问题,但我认为创建自定义过滤器对于满足您的需求来说可能有些过头了
<input type="checkbox" id="cb" ng-model="word" ng-true-value="has kitchen" ng-false-value="">
Jimi无法同时选择两个复选框的主要问题是,它们都绑定到同一个模型属性 如前所述,过滤器还存在一些其他声明性问题,但我认为创建自定义过滤器对于满足您的需求来说可能有些过头了 我的方法是创建一组选项,分别跟踪每个选择:
$scope.options = [
{
name: 'has kitchen',
selected: false
}, {
name: 'has bakery',
selected: false
}];
并迭代它们来构建您的复选框
<label ng-repeat="option in options">
<input type="checkbox" ng-model="option.selected"/>{{option.name}}
</label>
您可以使用一个简单的控制器函数来提供过滤
<ul>
<li ng-repeat="item in data | filter:itemFilter">{{item.name}}</li>
</ul>
当然,这是匹配逻辑的简化版本(去掉了常规的exp内容),但它应该演示其机制,然后您可以从中获取if
这里有一个有效的例子
编辑
下面是另一个版本,可以与原始json模型一起使用
<ul>
<li ng-repeat="item in data.list | filter:itemFilter">{{item.name}}</li>
</ul>
更新的示例Hi@MPowerKC,感谢您如此简洁地回答问题。恐怕我不能更改JSON,因为它是整个基础设施的一部分,但您肯定给了我一些想法让我尝试。@Jimi,我明白了,请看上面使用原始JSON格式的编辑。希望这有帮助:)
$scope.itemFilter = function(item) {
var filters = $scope.options.filter(function(element, idx, array) {
return element.selected;
}) || [];
var matched = true;
filters.forEach(function(option) {
matched = matched && item.services.indexOf(option.name) >=0;
})
return matched;
};
<ul>
<li ng-repeat="item in data.list | filter:itemFilter">{{item.name}}</li>
</ul>
$scope.itemFilter = function(item) {
var filters = $scope.options.filter(function(element, idx, array) {
return element.selected;
}) || [];
var matched = true;
filters.forEach(function(option) {
var matchingService = item.services[0].services.filter(function(element, idx, array) {
return element.serviceName == option.name;
}) || [];
matched = matched && matchingService.length > 0;
});
return matched;
};