2016-09-15 79 views
0

的能級來過濾anguler JS列表我的東西接受對象的列表從服務器這樣如何通過對象

[ 
    {id: 'a', checked :true,test:{sub:{var:4}}}, 
    {id: 'b', checked:true,test:{sub:{var:3}}}, 
    {id: 'c', checked:true,test:{sub:{var:2}}}, 
    {id: 'd', checked:true,test:{sub:{var:2}}}, 
    {id: 'e', checked:true,test:{sub:{var:3}}} 
] 

現在我很想很想「VAR」的基礎上過濾該列表。我做這樣的事情

<div ng-controller="repeatCtrl"> 
    <div ng:repeat="o in list | filter: {test.sub.var : myPrecious.id}"> 
     {{o.id}}: 
     <input type="checkbox" ng:model="o.checked" /> 
     {{o.checked}} 
    </div> 
</div> 

我的控制器代碼是這樣

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

myApp.controller('repeatCtrl', function($scope) { 
    $scope.list = [ 
     {id: 'a', checked :true,test:{sub:{var:4}}}, 
     {id: 'b', checked:true,test:{sub:{var:3}}}, 
     {id: 'c', checked:true,test:{sub:{var:2}}}, 
     {id: 'd', checked:true,test:{sub:{var:2}}}, 
     {id: 'e', checked:true,test:{sub:{var:3}}} 
    ]; 

    $scope.myPrecious = 2; 
}); 

我不知道什麼是錯的,請幫助。

回答

1

試試這個solution。您可以在filter處指定{$ : myPrecious.id}而不用擔心層次結構級別,如docs.angularjs.org所示:可以使用特殊屬性名稱(默認爲$)(例如在{$:「text」}中)接受針對任何屬性的匹配該對象或其嵌套對象屬性

HTML:

<div ng-repeat="o in list | filter : {$ : myPrecious.id}"> 
    {{o.id}} 
    <input type="checkbox" ng-model="o.checked" /> 
    {{o.checked}} 
</div> 

使用Javascript:

$scope.list = [ 
    {id: 'a', checked:true,test:{sub:{var:4}}}, 
    {id: 'b', checked:true,test:{sub:{var:3}}}, 
    {id: 'c', checked:true,test:{sub:{var:2}}}, 
    {id: 'd', checked:true,test:{sub:{var:2}}}, 
    {id: 'e', checked:true,test:{sub:{var:3}}} 
]; 

$scope.myPrecious = {id:2}; 
+0

嘿謝謝,是的,它爲我工作 –