我正在尝试使用我在控制器中编写的过滤器来缩小使用ng-options的选择列表。过滤器逻辑正在运行,但结果未显示。
这是我的控制器的相关部分:
$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] - 当我展开这些对象的属性时,我确认它们是我想要的。但是,选择列表会显示所有四个对象(我从四个数组中向下过滤)。
答案 0 :(得分:2)
您的过滤器需要返回true / false语句。像这样写下你的过滤器:
$scope.ESGFilter = function(item) {
// if you want to keep the item return true, else false
};
这是有效的,因为ngOptions
接收数组中的每个项目并将其传递给过滤器函数。您的示例无法正常工作,因为它返回一个空数组,该数组将始终解析为truthy值,并且所有对象都将被接受而不会被过滤。
这是一个插件: