按ng-repeat中的每个项目过滤掉

时间:2014-07-24 14:09:45

标签: angularjs

我有

<li ng-repeat="item in dummyData | unique:'status'" ng-click="select(item);" ng-class="{active: isActive(item)}"><a>{{item.status}}</a></li>

我想要做的是,在ng-click set

myFilter as

myFilter = {status: '{{item.status}}'}  

我想做的是

$scope.dummyData = [{id: 1, name="Joe", status="active"},{id: 2, name="Joe",status="inactive"},{id: 3, name="John", status="active"}];

这里我有关于ng-repeat的li元素并且获得了独特的状态。

我有一个带有相同虚拟数组的表列表,由myfilter过滤。

 <tr ng-repeat="item in dummyData | filter:myfilter">

我所要做的就是,

  <li ng-click='myfilter = {status: "active"}'><a>Active</a></li>
  <li ng-click='myfilter = {status: "inactive"}'><a>Inactive</a></li>

我已经以静态方式实现了这一点,但我想在上面重复这样做。

2 个答案:

答案 0 :(得分:0)

好的,你应该只使用angular提供的默认过滤器,这样你的代码将如下所示:

<li ng-repeat="item in dummyData | filter:status" ng-click="select(item);" ng-class="{active: isActive(item)}"><a>{{item.status}}</a></li>

答案 1 :(得分:0)

由于默认过滤器使用部分匹配,因此您需要编写自定义过滤器以进行精确匹配。您更新的控制器将如下所示:

function MyCtrl($scope) {
    $scope.dummyData = [
        {id: 1, name:"Joe", status:"active"},
        {id: 2, name:"Jane",status:"inactive"},
        {id: 3, name:"John", status:"active"}];
    $scope.setFilter = function(statusValue) {
        $scope.myFilter = function(item) {
            return item.status === statusValue;
        };
    };
};

请注意,dummyData的语法也不正确,因此也会导致问题。只要您点击“有效”或“无效”,它就会重新定义自定义过滤器,以使状态与“有效”状态完全匹配。或者&#39;不活跃&#39;。

这是一个展示你想要的fiddle

相关问题