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