【发布时间】:2014-08-18 18:42:41
【问题描述】:
我是计算机新手,正在尝试为 AngularJS 应用程序构建自定义过滤器。
我必须搜索一串整数 (cultivos.age),如果字符串包含mes.age 条件,则返回该项目。我设法制作了一个返回 == 值的工作过滤器。但是我无法编写一个'indexOf'条件,以便如果mes.age包含在cultivos.age数组中,它会返回该项目
工作过滤器:
angular.module('calendarioFilters',[]).filter('filtroMes', function(){ return function(cultivos, name){ var arrayToReturn = []; for (var i=0; i<cultivos.length; i++){ if (cultivos[i].age == this.mes.age) { arrayToReturn.push(cultivos[i]); } } return arrayToReturn; };});
和不工作的过滤器:
angular.module('calendarioFilters',[]).filter('filtroMes', function(){ return function(cultivos, name){ var arrayToReturn = []; for (var i=0; i<cultivos.length; i++){ if (cultivos[i].age.indexOf(this.mes.age) !== -1) { arrayToReturn.push(cultivos[i]); } } return arrayToReturn; };});
我在 HTML 中调用过滤器
<li ng-repeat="cultivo in cultivos | filtroMes:''">
即使在工作过滤器中,控制台也会记录“TypeError:无法读取未定义的属性‘长度’”。
谢谢!
【问题讨论】:
-
将此 angular.module('myFilters',[]) 更改为 angular.module('myFilters'),否则创建第二个过滤器将取消绑定第一个过滤器。 [] 导致从头开始重新定义模块。
-
你怎么称呼过滤器?你能用一个例子添加一个 jsfiddle 或 plunker 吗?
-
为什么您的
if声明中有>= -1?这基本上是说“抓住一切”。所以我不认为最终结果是未定义的,而是一切 -
另外,为什么你在第一个过滤器中使用
items,而在第二个过滤器中使用data? -
感谢您的回复:我已经用您的评论编辑了问题,看看是否更清楚。我仍然无法使第二个过滤器工作。
标签: javascript angularjs filter indexof