【问题标题】:Angular custom filter and indexOf conditionAngular 自定义过滤器和 indexOf 条件
【发布时间】: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 声明中有&gt;= -1?这基本上是说“抓住一切”。所以我不认为最终结果是未定义的,而是一切
  • 另外,为什么你在第一个过滤器中使用items,而在第二个过滤器中使用data
  • 感谢您的回复:我已经用您的评论编辑了问题,看看是否更清楚。我仍然无法使第二个过滤器工作。

标签: javascript angularjs filter indexof


【解决方案1】:

改变这一行:

if (item.age.indexOf(this.mes.age) >= -1) {

到:

if (item.age.indexOf(this.mes.age) !== -1) {

希望这会有所帮助。

【讨论】:

  • 谢谢。这是一个错误,但显然不是唯一一个。过滤器仍然不起作用。
猜你喜欢
  • 2015-04-26
  • 1970-01-01
  • 2013-10-30
  • 2017-07-13
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多