2016-06-07 21 views
2

在我學習Angularjs,我有一個小問題重新排序納克重複結果採用NG-重複顯示所有新聞和M看起來是這樣的:angularjs根據給定的數組

{ 
    "id": 1, 
    "preferences": [ 
     3, 
     4 
    ] 
} 

所以,我想在我的NG-重複使用,該陣列由用戶的喜好回來,和排序顯示喜好冷杉新聞噸,那麼低於其他消息,這可能嗎?

喜歡的東西:

<li ng-repeat="new in news | filter:{'userPreferences' : new.preferences}"> 

我真的不知道,如果我要使用過濾器,排序依據或排序,任何幫助嗎?

+0

所以,如果'new.preferences'陣列有** **所有'userPreferences'的元素,你想顯示他們是什麼呢? – Chinni

+0

是的,但是,像new.preferences有類別3和4,並且userPreferences有3,這個新的將首先顯示,其他所有其他顯示。像,根據相關性排序,我認爲 –

+0

你想顯示所有新的也不符合用戶偏好? – Chinni

回答

1

你可以有你自己的函數,返回你的範圍匹配preferences數量:

function intersect(array1, array2) { 
    return $filter('filter')(array1, function(n){ 
    return array2.indexOf(n) != -1; 
    }); 
} 

$scope.matchedPreferences = function(n) { 
    return intersect(n.preferences, $scope.userPreferences).length; 
}; 

,並把它傳遞給orderBy過濾:

<li ng-repeat="n in news | orderBy:matchedPreferences:true">{{n}}</li> 

這將責令由新聞按降序排列的匹配首選項的數量。

這裏Fiddle

相關問題