0

尝试为 Angular.js 创建一个过滤器

Controller.js 示例片段:

function TitleListCtrl($scope) {
  $scope.titles = [
    { "name": "Foobar",
      "editions": 
        [{"print": true, 
          "ebook": false,
          "audio": false }]
    },
   { "name": "FooBarBar",
      "editions": 
        [{"print": false, 
          "ebook": false,
          "audio": false }]
   }
];}

角HTML:

<ul ng-controller="TitleListCtrl">
        <li class="TitleList" ng-repeat="title in titles 
                                         | filter:isUpcoming 
                                         | orderBy:'date'">{{title.name}}</li>
</ul>

现在,我试图只返回那些没有活动版本的标题(没有版本数组的成员设置为 true)。发现很难在网上找到这样的例子......

$scope.isUpcoming = function(title) {
return title.editions[0] & title.editions[1] & title.editions[2]===false;
};
4

2 回答 2

0

我使用 data-ng-show 代替了上述方法:

<ul ng-controller="TitleListCtrl">
<li class="TitleList" data-ng-show="!(title.upcoming)" 
                                    ng-repeat="title in titles 
                                    | filter:query 
                                    | orderBy:'date'">{{title.name}}</li>
</ul>

"upcoming": true,并在需要的地方添加了一对新的标题。

function TitleListCtrl($scope) {
  $scope.titles = [
    { "name": "Foobar",
  "editions": 
    [{"print": true, 
      "ebook": false,
      "audio": false }]
    },
   { "name": "FooBarBar",
  "editions": 
    [{"print": false, 
      "ebook": false,
      "audio": false }],
  "upcoming": true
   }
];}
于 2013-04-02T21:02:40.117 回答
0

请查看 plunker http://plnkr.co/edit/SkXnZhwic8KHWvj0JyFI?p=preview

它实现了一个自定义过滤器,将长列表过滤到即将到来的列表中,然后呈现即将到来的列表

于 2013-04-02T22:09:34.967 回答