2017-01-27 8 views
2

i кодирование приложения в социальных сетях. У меня проблема с профилем на странице профиля. Я хочу, чтобы это были видимые пункты меню в зависимости от определенных обстоятельств. Я поместил пункты меню в массив, подобный этому;как я могу сделать этот фильтр с ng-repeat

$scope.menuitems = [ 
    {id : "1", name : "Message", show : "other", url : ""}, 
    {id : "2", name : "Follow", show : "other", url : ""}, 
    {id : "3", name : "Followers", show : "all", url : ""}, 
    {id : "4", name : "About", show : "all", url : ""}, 
    {id : "5", name : "Statistics", show : "all", url : ""}, 
    {id : "6", name : "Edit", show : "own", url:""} 
]; 

, если виден профиль собственный профиль пользователя, я хочу, чтобы напечатать элементы с «шоу» значение «собственный». Если видимый профиль является профилем другого пользователя, я хочу напечатать элементы с «показать» значение «другое». И я хочу печатать элементы с «показать» значение «все» в каждой должности. Я сделал небольшое исследование в Интернете для этого, но, я думаю, я не нашел правильных слов. Как я делаю это с ng-repeat на Angularjs?

+0

вы можете сделать только один фильтр в то время – Sajeetharan

+0

Например, если виден профиль собственный профиль пользователя, я хочу, чтобы как это if (item.show! = 'other'). Но я не мог найти, как писать в ng-repeat @Sajeetharan –

+0

На какой переменной $ scope вы сохраняете видимый профиль? – tomepejo

ответ

2

Создать пользовательский фильтр

$scope.conditionVar = 'own'; //this will change depending on what profile 

    angular.module('myFilters', []). 
    filter('profilefilter', function() { 
    return function(items, condition) { 
     var out = []; 
     for (var i in items) { 
     var item = items[i]; 
     if (item.show === 'all' || item.show === condition) { 
      out.push(item); 
     } 
     } 
     return out; 
    } 
    }); 
    <li ng-repeat="menuitem in menuitems | profilefilter:conditionVar">{{menuitem}}</li> 

здесь рабочая демо - https://jsfiddle.net/0o7ewpgd/1/

+0

Я пробовал, но это не сработало Я пробовал, но это не сработало. Я не получал никаких ошибок, но элементов, которые не были перечислены –

+0

Я написал ваши коды, только изменив имена переменных. –

+0

Вам нужно выполнить логическую реализацию этого кода, также немного от вашего конца, а также у нас нет кода – 1Mayur