2014-04-03 102 views
1

我正在测试$ filter过滤功能,我没有使用过它,有人可以告诉问题是什么,为什么过滤这些对象。使用过滤器来过滤angularjs中的对象

这里是jsfiddle

var app = angular.module('myApp', []); 

function ctrl($scope, $filter) { 
    $scope.images = [{ 
     orgName: 'B', 
     sortOrder: 111 
    }, { 
     orgName: 'A', 
     sortOrder: 12 
    }, { 
     orgName: 'D', 
     sortOrder: 13 
    }, { 
     orgName: 'C', 
     sortOrder: 14 
    }]; 

    $scope.filter = function() { 
     $scope.images = $filter('filter')($scope.images, 'orgName'); 
    } 
} 
+0

你究竟想要做什么?按“orgName”排序? – Cherniv

+0

不可以过滤它们,如果点击A它应该只返回A等等 – Erick

+0

像这样:http://jsfiddle.net/M8nDQ/38/? – Cherniv

回答

0

jsFiddle

我也改变了HTML的链接现在是(通过ORGNAME作为参数):

<a href="" ng-click="filter(image.orgName)">{{image.orgName}}</a> 

现在的过滤器得到orgname作为参数并且具有用于比较的功能:

var app = angular.module('myApp', []); 
function ctrl($scope, $filter) { 
    $scope.images = [{ 
     orgName: 'B', 
     sortOrder: 111 
    }, { 
     orgName: 'A', 
     sortOrder: 12 
    }, { 
     orgName: 'D', 
     sortOrder: 13 
    }, { 
     orgName: 'C', 
     sortOrder: 14 
    }]; 

    $scope.filter = function (orgName) { 
     $scope.images = $filter('filter')($scope.images, {'orgName': orgName}); 
    } 
} 

你可能想要考虑有两个列表的列表,或者一旦你过滤掉了所有其他元素永远。例如,像displayImages,allImages这样的东西。

另外jsFiddle有两个列表,正如我上面所说的那样,重置。

+0

是的,我知道我宽松的信息。如果我使用select,并且不选择过滤值,它应该将过滤器重置为默认值,以便显示所有值,我应该添加什么? – Erick

+0

这个小提琴有一个重置功能:http://jsfiddle.net/M8nDQ/52/ –