角度过滤器选择选项

时间:2017-01-31 21:18:02

标签: javascript angularjs

我有多个选择框,我希望根据其他框的选择过滤他们的选项(包含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>

0 个答案:

没有答案