Javascript AngularJS-控制器的过滤器逻辑工作,未正确显示

Javascript AngularJS-控制器的过滤器逻辑工作,未正确显示,javascript,angularjs,Javascript,Angularjs,我试图使用我在控制器中编写的过滤器,使用ng选项缩小选择列表的范围。过滤器逻辑正在工作,但结果无法显示 以下是我的控制器的相关部分: $scope.ESGFilter = function() { var esg; var filteredESGs = []; // LOGIC GOES HERE TO POPULATE THE filteredESGs ARRAY console

我试图使用我在控制器中编写的过滤器,使用ng选项缩小选择列表的范围。过滤器逻辑正在工作,但结果无法显示

以下是我的控制器的相关部分:

        $scope.ESGFilter = function() {
            var esg;
            var filteredESGs = [];

            // LOGIC GOES HERE TO POPULATE THE filteredESGs ARRAY

            console.log(filteredESGs);
            return filteredESGs;
        }]);
以下是HTML:

    <select class="input-block-level" id="inputESG" name="inputStoch"
         ng-model="Run.ESG" 
         ng-options="econ.Id as econ.Name for econ in econData | filter:ESGFilter" size="5">
    </select>
我怀疑这个问题与HTML中的filter:ESGFilter有关。。。我不明白为什么我从函数返回的数组没有显示出来。控制器中的函数肯定正在被调用,逻辑正在工作


作为参考,console.log输出:[Object,Object]——当我展开这些对象的属性时,我确认它们是我想要的。但是,选择列表显示了我从四个数组中筛选的所有四个对象。

您的筛选器需要返回一个true/false语句。按如下方式编写过滤器:

$scope.ESGFilter = function(item) {
  // if you want to keep the item return true, else false
};
这是因为ngOptions接受数组中的每个项并将其传递给filter函数。您的示例不起作用,因为它返回一个空数组,该数组将始终解析为真实值,并且所有对象都将被接受而不是过滤

这里有一个提示:


你是人间的神,非常感谢!我想我应该知道为什么我的console.log语句执行了这么多次。。。我在逻辑中使用了angular.forEach,所以我不知道有一个嵌套的for循环,因为这些项都是从ng选项传入的。