0
У меня есть настраиваемый фильтр (arrayDiff
), который принимает аргумент. Фильтр вызывается в ng-repeat, но независимо от того, какой аргумент я вставляю, фильтр всегда принимает весь массив в качестве аргумента.Угловой пользовательский фильтр игнорирует аргумент
angular.module('demo', [])
.controller('Ctrl', function ($scope, $filter) {
$scope.selectedPriority = [ ];
$scope.data = [];
$scope.priorities = [1, 2, 3];
$scope.objects = [{"date": "2017-01-08", "duration": 120}, {"date": "2017-01-08", "duration": 120}];
})
.filter('arrayDiff', function() {
return function(diff) {
console.log(diff); //is always [1,2,3]
return diff;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!DOCTYPE html>
<html ng-app="demo" ng-controller="Ctrl">
<head>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0-rc2/angular-material.min.css">
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
<!-- Angular Material Library -->
<script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0-rc2/angular-material.min.js"></script>
<div ng-repeat="object in objects">
<input-container>
<select ng-model="selectedPriority[$index].priority" ng-change="selectedPriority[$index].objectId = object.id" >
<option ng-value="priority" ng-repeat="priority in priorities | arrayDiff:'hello'">{{ priority }}</option> //Filter call
</select>
</input-container>
</div>
</body>
</html>