filter function ng-repeat返回true,但显示0结果

时间:2015-06-13 13:27:29

标签: javascript angularjs

我有一个返回true或false的自定义函数

控制器功能:

    this.isStoreEquipment = function(equipment){
        var returnVal = false
        if (Array.isArray(equipment)){
            equipment.forEach(function(piece, index, array){
                if (Config.myEquipment().indexOf(piece)!= -1){
                    returnVal = true
                    return
                }
            });             
        }
        return returnVal
    }

并在我的表格中

        <tr ng-cloak id="{{$index}}"
            ng-repeat-start="equipment in currentController.storeEquipment | orderBy: '-lastService ' | filter: currentController.isStoreEquipment(equipment.storeNum))>"
            <td>{{equipment.lastService | date:'MM/dd/yyyy'}}</td>
            <td>{{equipment.type}}</td>
            <td>{{equipment.name}}</td>
            <td>{{equipment.storeNum}}</td>
        </tr>

现在我已经验证通过在我的表中添加<td>currentController.isStoreEquipment(equipment.storeNum)并且返回true和false,它确实返回true,但是我没有得到任何结果,过滤器应用于我的ng-repeat表达。

1 个答案:

答案 0 :(得分:2)

你应该注册这样的过滤器:

 angular.module('test').filter('inStore', function() {
  return function(input) {
    ....
  }
});

它们通常是更通用的功能,可用于多个控制器。也就是说,input是您应用过滤器的值。在这种情况下,它是一个数组,过滤器应该返回一个只有'good'项的新数组。

这是一个很好的例子https://stackoverflow.com/a/15197233/3927379