Javascript angularjs:将值传递给自定义过滤器,以便在下拉单击时启用它

Javascript angularjs:将值传递给自定义过滤器,以便在下拉单击时启用它,javascript,angularjs,drop-down-menu,angularjs-filter,Javascript,Angularjs,Drop Down Menu,Angularjs Filter,我有一些数据。默认情况下,应显示所有数据,但当用户单击下拉列表中的某个值时,只有过滤器应开始过滤数据。 为此,我遵循以下方法 我的过滤器是这样的 filter('myFilter', function() { return function(data, userInput) { var filteredArray = []; // this show whole data if (true) {/*want to insert enableFilte

我有一些数据。默认情况下,应显示所有数据,但当用户单击下拉列表中的某个值时,只有过滤器应开始过滤数据。 为此,我遵循以下方法

我的过滤器是这样的

filter('myFilter', function() {
    return function(data, userInput) {
      var filteredArray = [];

      // this show whole data
      if (true) {/*want to insert enableFilter variable here*/
        angular.forEach(data, function(dataobj, key) {
          console.log(dataobj);
          filteredArray.push(dataobj);
        })

      } 
//this show filtered data
      else {
        angular.forEach(userInput, function(value, key) {
          angular.forEach(data, function(dataobj, key) {
            if (dataobj.type.indexOf(value) > -1 && filteredArray.indexOf(dataobj) == -1) {
              filteredArray.push(dataobj);
            }
          })
        });
      }
      return filteredArray;

    }
  });
<select name="multipleSelect" id="multipleSelect" ng-model="data.multipleSelect" ng-change=click() multiple>
<option value="classA">Class A</option>
<option value="classB">Class B</option>
<option value="classC">Class C</option>
<option value="classD">Class D</option>
<option value="classE">Class E</option>
要获得用户点击事件,我使用如下ng更改

filter('myFilter', function() {
    return function(data, userInput) {
      var filteredArray = [];

      // this show whole data
      if (true) {/*want to insert enableFilter variable here*/
        angular.forEach(data, function(dataobj, key) {
          console.log(dataobj);
          filteredArray.push(dataobj);
        })

      } 
//this show filtered data
      else {
        angular.forEach(userInput, function(value, key) {
          angular.forEach(data, function(dataobj, key) {
            if (dataobj.type.indexOf(value) > -1 && filteredArray.indexOf(dataobj) == -1) {
              filteredArray.push(dataobj);
            }
          })
        });
      }
      return filteredArray;

    }
  });
<select name="multipleSelect" id="multipleSelect" ng-model="data.multipleSelect" ng-change=click() multiple>
<option value="classA">Class A</option>
<option value="classB">Class B</option>
<option value="classC">Class C</option>
<option value="classD">Class D</option>
<option value="classE">Class E</option>
这是我的扑克牌()

将“真”更改为“假”,以使过滤器代码正常工作

你想要的方式:


我已将一个scope参数传递给filter,最初它被设置为true,当用户从下拉列表中选择时,它被设置为false,filter开始应用。

我认为您需要了解一些关于filter以及如何使用它们的信息。我没有看到您在代码中的任何地方使用过滤器。非常感谢@brute_force,它现在可以工作了。只有一件事,有没有更好的方法来启用过滤器?