0

У меня есть словарь, как это:AngularJS нг-скрытие в гнездовой словаре

var data = { 
    a: [1, 2, 3, 4, 5], 
    b: [ 
    [1, 2], 
    [3, 4], 
    [5, 6] 
    ] 
}; 

Теперь мне нужно использовать ng-hide, чтобы скрыть элемент, если 2 существует в data->a. Было бы легко сделать так:

<i ng-hide="(data.a | filter:2).length">2 not found</i> 

Теперь, как я могу сделать это с data->b? Мне нужно скрыть сообщение, если 2 находится в любом из data->b элементов.

Я нашел How do I only show an element if nested ng-repeat is not empty?. Но мне нужно показывать сообщение только один раз.

+0

только используя 'ng-hide =" (data.b | фильтр: 2) .length "работает для меня –

+0

@NewDev Возможно, ng-show. 'Мне нужно показывать сообщение только один раз.' [If not empty]? confusing ..:/ – PSL

+0

@PSL Мне нужно поместить код @New Dev, предложенный внутри цикла. Поскольку 2 элемента 'b' не содержат' 2', сообщение '2 not found' будет показано дважды. Мне нужно скрыть сообщение только один раз, если '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' – AliBZ

ответ

1

Вам нужно создать один фильтр, который будет принимать массив. И это даст вам выход на основе предоставленной стоимости.

HTML

<div ng-hide="(data.b | filteronsubarray:2)">2 not found</div> 

Фильтр Код

app.filter('filteronsubarray', function() { 
    return function(arr, toFind) { 
    var isFound = false; 
    angular.forEach(arr, function(val, index) { 
     angular.forEach(val, function(v, i) { 
     if(v == toFind){ 
      isFound = true; 
     } 
     }); 
    }); 
    return isFound; 
    } 
}); 

Вот Fiddle ссылка (http://plnkr.co/edit/gApW4sAYMOBLPh8gJyE3?p=preview)

Надеется, что это полезно для вас.

+0

Отметьте ответ, если он вам полезна. –

+0

То, что я искал. Благодарю. – AliBZ

+1

PS. Я буду отмечать его как правильный ответ. Потерпи!! – AliBZ

0

Если все, что вам нужно сделать, что бы вы ни делали для data.a, для каждого элемента data.b за исключением, то вам просто необходимо перебрать data.b и применить ту же логику:

<i ng-repeat="b in data.b" 
    ng-hide="(b | filter:2).length">2 not found</i> 

Plunker

Смежные вопросы