我一直在努力过滤两个不同的数组,一个是复选框值,另一个是整数数据。换句话说,第一个数组包含来自共享点列表的字段值,第二个数组包含来自相同共享点列表的项。如何根据选中的复选框进行过滤。这是我的代码:
print_r($_POST);
我尝试过使用ng-model,但那并没有奏效。请帮忙。谢谢!
答案 0 :(得分:0)
作为第一步,当复选框被选中时,您需要为将在ng模型中设置的复选框输入提供值。
答案 1 :(得分:0)
首先,您需要跟踪所选的选项,因此我将已检查属性添加到每个进程对象,然后ng-model更改其值。
第二我改变了两个这样的阵列
[“Alfreds Futterkiste,Berglunds Snabbkop,Ernst Handel,Centro Comercial Moctezuma”]
从一个长值到
[“Alfreds Futterkiste”,“Berglundssnabbköp”,“Ernst Handel”,“Centro comercial Moctezuma”]
最后你需要定义自定义过滤器功能,在我的情况下 containsFn 检查每个 toBeFiltered 项目,看看这个项目的某些进程是否包含在进程中数组,条件是其检查== true
angular.module('myApp', []).controller('myCtrl', function($scope){
$scope.processes = [
{name: "Alfreds Futterkiste", checked: false},
{name: "Berglunds snabbköp", checked: false},
{name:"Centro comercial Moctezuma", checked: false},
{name: "Ernst Handel", checked: false}
];
$scope.toBeFiltered = [{
"Title": "title1",
"process": ["Alfreds Futterkiste"]
}, {"Title" : "title2",
"process": ["Alfreds Futterkiste", "Berglunds snabbköp"]
},{"Title" : "title2",
"process": ["Alfreds Futterkiste", "Berglunds snabbköp","Ernst Handel", "Centro comercial Moctezuma"]
}];
$scope.containFn = function(item){
var found = false;
item.process.forEach(function(element){
if($scope.processes.some(function(it) {return (it.name == element && it.checked== true) })) found = true;
});
return found;
}
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='myApp' ng-controller='myCtrl'>
<div ng-repeat="x in processes">
<input type="checkbox" ng-model="x.checked"/>{{x.name}}
</div>
<div ng-repeat = "y in toBeFiltered | filter: containFn">
<span class="title">{{y.Title}}</span>
<span class="process"> {{y.process}}</span>
</div>
</div>
运行代码段,如果有什么不清楚,或者我没有随时发表评论