Javascript angularjs ng基于单击时的数组值重复筛选
我有一个数组Javascript angularjs ng基于单击时的数组值重复筛选,javascript,angularjs,html,angularjs-ng-repeat,Javascript,Angularjs,Html,Angularjs Ng Repeat,我有一个数组$scope.something=['xyz','abc','pqr'] 单击后,我想过滤ng repeat数据,这样它将返回使用'xyz'、'pqr'和'abc'过滤的结果JSON数据 ng repeat=“flt_det中的数据过滤器:某物” 提前感谢。如果您希望使用$scope.something中的任何匹配元素筛选数据,则可能需要使用自定义筛选器: app.filter("somethingFilter", function() { return function(ar
$scope.something=['xyz','abc','pqr']代码>
单击后,我想过滤ng repeat
数据,这样它将返回使用'xyz'
、'pqr'
和'abc'
过滤的结果JSON数据
ng repeat=“flt_det中的数据过滤器:某物”
提前感谢。如果您希望使用$scope.something中的任何匹配元素筛选数据,则可能需要使用自定义筛选器:
app.filter("somethingFilter", function() {
return function(array, something) {
return array.filter(function(ele) {
return (something.indexOf(ele) > 0)
});
}
});
现在在HTML中
ng-repeat="data in flt_det | filter:something".
如果数据存在于某物
数组中,这将过滤flt_det
点击一个按钮
这将在单击按钮时更新$scope.flt_det
数据
在这种情况下,您甚至可以使用$filter
:
app.controller("myCtrl", function($scope, $filter)
{
$scope.buttonClickHandler = function() {
$scope.flt_det = $filter('somethingFilter')($scope.flt_det,$scope.something);
};
});
编辑演示
角度模块(“应用程序”,[])
.controller(“MainCtrl”,函数($scope){
$scope.flt_det=[“abc”、“pqr”、“SDF”、“SDFD”、“xyz”];
$scope.something=[“abc”、“pqr”、“xyz”];
$scope.buttonClickHandler=函数(){
$scope.flt_det=$scope.flt_det.filter(函数(ele)){
返回($scope.something.indexOf(ele)>0)
});
}
});代码>
JS-Bin
{{data}}
过滤数据
编辑:修复了使用数组输入进行过滤的问题
如果要在控制器中使用内置角度过滤器而不是自定义过滤器,另一个选项是执行以下操作(工作):
有关在控制器中使用过滤器的信息,请参阅此处的角度文档:否这是其他一些场景。点击是在一个按钮上。我需要基于3值的结果,我们可以在点击单个按钮时执行此操作吗?使用buttonClick handler更新。还添加了一个演示:)@user2131395 OP想要使用$scope.something
数组来过滤另一个数组$scope.flt\u det
。但是$filter将使用作为第二个参数的原语值来过滤第一个参数array
。谢谢@mohamedrias,肯定误解了这个问题。修正了答案
app.controller("myCtrl", function($scope, $filter)
{
$scope.buttonClickHandler = function() {
$scope.flt_det = $filter('somethingFilter')($scope.flt_det,$scope.something);
};
});
$scope.filtered = [];
for(var index = 0; index < $scope.something.length; index++) {
var singleFilter = $filter('filter')($scope.flt_det, $scope.something[index]);
$scope.filtered = _.union($scope.filtered, singleFilter);
}
ng-repeat="data in filtered"