2014-05-21 45 views
0

我有如下所示一個範圍變量:Angularjs篩選範圍控制器內創建新的作用域

$scope.people = [ 
     {'id':'1' ,'name':'John','category':'m'}, 
     {'id':'2', 'name':'Jack','category':'m'}, 
     {'id':'3','name':'Mark','category':'m'}, 
     {'id':'4','name':'Ernie','category':'m'}, 
     {'id':'5','name':'Jane','category':'w'}, 
     {'id':'6','name':'Jill','category':'w'}, 
     {'id':'7','name':'Betty','category':'w'}, 
     {'id':'8','name':'Mary','category':'w'} 
     ]; 

這是我針對此問題的puspose創建的示例範圍可變。但是我會從服務中獲取這些數據。我想實現的是,如何將此範圍變量過濾到控制器內的不同變量中?

例如,我要讓2個新範圍從給定的範圍如下:

$scope.men = [ 
      {'id':'1' ,'name':'John','category':'m'}, 
      {'id':'2', 'name':'Jack','category':'m'}, 
      {'id':'3','name':'Mark','category':'m'}, 
      {'id':'4','name':'Ernie','category':'m'} 
      ]; 

$scope.women = [ 
      {'id':'5','name':'Jane','category':'w'}, 
      {'id':'6','name':'Jill','category':'w'}, 
      {'id':'7','name':'Betty','category':'w'}, 
      {'id':'8','name':'Mary','category':'w'} 
      ]; 

我如何實現這一目標?任何知識將是非常有益的

回答

1

你可以使用array.filter

function isMan(person){ 
    return person.category == 'm'; 
} 

function isWoman(person){ 
    return person.category == 'w'; 
} 

$scope.men = $scope.people.filter(isMan); 
$scope.women = $scope.people.filter(isWoman); 

Fiddle

對於舊的瀏覽器,你將需要填充工具過濾器。

或者,您可以使用用戶下劃線的filter函數。

+0

嗨...它工作得很好。你能告訴我是否有類似的方法來加入2個作用域變量嗎? – Abhishek

+0

範圍屬性只是JavaScript類型,因此您可以使用concat來連接數組。 –

0

你需要使用一些JavaScript像underscore.js

LIB

舉個例子

_.groupBy($scope.people, function(v){ return v.category == 'm' }); 

不知道有關源代碼。