在 ng-repeat 中反转过滤器 - AngularJS



我知道这类问题已经得到了解答。但是有些东西我被困住了。

我的 JSON 数据如下所示:

[{
  "batch_queue_name": "Batch One",
  "start_date": "12/01/2016 10:18 P.M.",
  "end_date": "12/03/2016 01:08 A.M.",
  "completion_status": "100"
}, {
  "batch_queue_name": "Batch Two",
  "start_date": "12/10/2016 12:18 A.M.",
  "end_date": "12/11/2016 05:23 P.M.",
  "completion_status": "100"
}, {
  "batch_queue_name": "Batch Three",
  "start_date": "04/01/2017 12:18 A.M.",
  "end_date": "06/01/2017 03:21 P.M.",
  "completion_status": "60"
}, {
  "batch_queue_name": "Batch Four",
  "start_date": "05/01/2017 01:25 A.M.",
  "end_date": "06/01/2017 12:30 A.M.",
  "completion_status": "97"
}, {
  "batch_queue_name": "Batch Five",
  "start_date": "05/01/2017 12:18 A.M.",
  "end_date": "08/01/2017 03:37 A.M.",
  "completion_status": "42"
}, {
  "batch_queue_name": "Batch Six",
  "start_date": "16/10/2016 12:18 A.M.",
  "end_date": "18/10/2016 05:23 P.M.",
  "completion_status": "100"
}]

现在,在我的ng-repeat中,我正在尝试过滤那些完成状态不是 100 的:

<tr ng-repeat="batch in vm.batches | filter: {batch.completion_status:'!'+'100'}">
     <td> ... </td>
 </tr>

但这会引发一个错误:

语法错误:标记"."是意外的,期望 [:] 位于第 28 列 表达式 [VM.批处理 |NaNilter: {batch.completion_status != '100%'}] 从 [.completion_status != '100%'}] 开始。

我做错了什么?

你不必写batch.completion_status .你可以这样做:

ng-repeat="batch in batches | filter: {completion_status: '!100'}"

JSFiddle 上的演示

不需要

batch.completion_status。只需输入:


<tr ng-repeat="batch in vm.batches | filter : {completion_status:'!'+'100'}"> </tr>

你也可以试试这种控制器逻辑:

 $scope.filterRange = function(obj) {
    return obj.completion_status != 100;
 };

最新更新