我有多个选择框,我希望根据其他框的选择过滤他们的选项(包含1,2和3的数组)。
如果在一个框中选择“1”,则其他框应仅显示带有选项“2”和“3”的数组,依此类推。
我已经写了一个过滤器,但它没有完全正常工作。 例如:如果在一个框中选择“1”,则仅从此框的选项数组中删除“1”,但应在其他框中将其删除,并在选中的框中保持可见。
我的问题已在此代码段和http://plnkr.co/edit/COROt6ihHgyhe8jyErry?p=preview
中完整展示
angular.module('demo', [])
.controller('Ctrl', function ($scope, $filter) {
$scope.selectedPriority = [ ];
$scope.priorities = ['1', '2', '3'];
$scope.objects = [{id:1}, {id:2},{id:3}];
})
.filter('arrayDiff', function() {
return function(array, diff) {
var i, item,
newArray = [];
for(i = 0; i < array.length; i++) {
item = array[i];
if(diff != item) {
newArray.push(item);
}
}
return newArray;
};
});
<!DOCTYPE html>
<html ng-app="demo" ng-controller="Ctrl">
<head>
<script data-require="angular.js@*" data-semver="1.3.6" src="https://code.angularjs.org/1.3.6/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div ng-repeat="object in objects">
<select ng-model="selectedPriority[$index].priority">
<option ng-value="priority" ng-repeat="priority in priorities | arrayDiff:selectedPriority[$index].priority">{{ priority }}</option>
<select>
</div>
</body>
</html>