Javascript 如何使用Angularjs过滤器过滤绑定到两个选择框的数组

Javascript 如何使用Angularjs过滤器过滤绑定到两个选择框的数组,javascript,jquery,angularjs,angularjs-filter,Javascript,Jquery,Angularjs,Angularjs Filter,我有两个选择框(框1和框2),它们绑定到模型数组。在框1中选择选项时,该项目不应显示在框2中,反之亦然。我怎样才能在Angularjs中做到这一点 下面是我的HTML <select class="form-control" name"box1" ng-model="data.box1" ng-options="sq.text for sq in array1.boxvalue | filter :data.box1" required><option value="">

我有两个选择框(框1和框2),它们绑定到模型数组。在框1中选择选项时,该项目不应显示在框2中,反之亦然。我怎样才能在Angularjs中做到这一点

下面是我的HTML

<select class="form-control" name"box1" ng-model="data.box1" ng-options="sq.text for sq in array1.boxvalue | filter :data.box1" required><option value="">Choose 1</option></select>

<select class="form-control" name"box2" ng-model="data.box2" ng-options="sq.text for sq in array1.boxvalue | filter: data.box1"" required><option value="">Choose 2</option></select>

array1.boxvalue = {['id':1,'text':'test1'],['id':2,'text':'test2'],['id':3,'text':'test3']}
选择1

您的想法是正确的,您需要一个过滤器,它将遍历数组并排除您不喜欢的值

(我是在头脑中编写代码,所以我不确定它是否100%有效。)

app.filter('excludeValue',function(){
返回函数(输入,val){
var newArray=[];
//循环浏览所有结果并删除不需要的结果
对于(var n=0;n

编辑:这是一个工作视图:

   <select    ng-model="data.box1" 
  ng-options="sq.text for sq in array1 | filter: notinbox2" required></select>

<select    ng-model="data.box2" ng-options="sq.text for sq in array1 |filter: notinbox1" required></select>
把你的问题简化了几件事

普朗克[

   <select    ng-model="data.box1" 
  ng-options="sq.text for sq in array1 | filter: notinbox2" required></select>

<select    ng-model="data.box2" ng-options="sq.text for sq in array1 |filter: notinbox1" required></select>
$scope.array1 =[{'id':1,'text':'test1'},{'id':2,'text':'test2'},{'id':3,'text':'test3'}]
        $scope.data={}
        $scope.notinbox2 = function(item){
            if(item == $scope.data.box2)
                {
                return false

                }
            else 
                return true

        }
        $scope.notinbox1 = function(item){
            if(item == $scope.data.box1)
                {
                return false

                }
            else 
                return true

        }