2016-11-23 50 views
0

我想最基本的过滤器我的名单上,如果某值为null(而不是数组),那么过滤出来Angular1过滤器:{场:“!!”}不工作

JSON样品

{ 
    "runningServices": [ 
    { 
     "servicename":"service1", 
     "previousLocations": null, 
     "cancelReason": null, 
     "delayReason": null 
    }, 
    { 
     "servicename":"service2" 
     "previousLocations": null, 
     "cancelReason": null, 
     "delayReason": { 
     "reason":"pigeons" 
     } 
    }, 

    ] 
} 

我的代码(控制器中的数据绑定到$ scope.listOfServices = data.runningServices)

<tr ng-repeat="service in listOfServices | filter:{delayReason:'!!'}> 
//stuff 
</tr> 

如果没有过滤器,一切名单,与过滤我只是得到了一个空白页面也..试着'!'

回答

2

写一个小的过滤器(nullFilter在我的例子):

app.controller('MainCtrl', function($scope) { 
    $scope.name = 'World'; 

    $scope.listOfServices = { 
    "runningServices": [ 
     { 
     "servicename":"service1", 
     "previousLocations": null, 
     "cancelReason": null, 
     "delayReason": null 
     }, 
     { 
     "servicename": "service2", 
     "previousLocations": null, 
     "cancelReason": null, 
     "delayReason": { 
      "reason": "pigeons" 
     } 
     } 
    ] 
    } 

    $scope.nullFilter = function(value){ 
    return value.delayReason !== null; 
    }; 
}); 

和HTML:

<div ng-repeat="service in listOfServices.runningServices | filter: nullFilter"> 
    {{service.servicename }} 
</div> 

plunker:https://plnkr.co/edit/pc2TkQh5qlnoF6JqfqZh?p=preview

+0

我不能感谢你足够努力,你放入这个解决方案。使用你的例子是我需要帮助我解决我的问题,并给我一个很好的介绍客户过滤器。我只需要筛选器,因为我已将“运行服务的额外级别”并入控制器的范围中。再次感谢 – MOLEDesign

+0

很高兴帮助你:),请注意,我的答案中的nullFilter只是角JS内核过滤器的第二个参数(而不是它自己的过滤器),我更新了我的plunker并添加了customNullFilter(它是自定义过滤器)及其实现。请享用 :) – Andriy