【问题标题】:filter function ng-repeat returning true but 0 results are displayed过滤函数 ng-repeat 返回 true 但显示 0 个结果
【发布时间】:2015-08-29 09:59:39
【问题描述】:

我有一个返回 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>

现在我已经通过在我的表中添加&lt;td&gt;currentController.isStoreEquipment(equipment.storeNum) 来验证这确实返回 true,并且它返回 true 和 false 就像它应该返回的那样,但是我没有得到任何结果,过滤器应用于我的 ng-repeat 表达式。

【问题讨论】:

  • 我没有看到任何ng-repeat-end 属性,因此不要使用ng-repeat-start,而是使用ng-repeat
  • @alesc ng-repeat-end 在页面下方

标签: javascript angularjs


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2018-12-11
    • 1970-01-01
    • 2020-05-11
    相关资源
    最近更新 更多