2015-07-09 4 views
0

У меня проблема, если нелегко решить ta. В моей базе данных у меня есть таблица в организациях, и некоторые из них могут быть «скрыты». Вы можете не видеть их в списке, если не ввести уникальный код, указанный администратором. Если пользователь вводит код только тогда, эта организация может появиться в списке.angularjs фильтр два значения

Мой список теперь выглядит следующим образом:

<a class="item item-avatar" ng-repeat="lugar in organizations_all | filter:search" ng-click="mostrarAreas(lugar.id)" ng-if="organizations_filter !=''" ng-show="!lugar.hide"> 
    <img image-lazy-src="{{lugar.photo}}" style="border-radius: 0 !important;"> 
    <button class="button button-icon icon ion-plus-circled" ng-click="agregarLugar(lugar.id,lugar.private);$event.stopPropagation()" style="float: right;"></button> 
    <h2>{{lugar.name}}</h2> 
    <p class="icon ion-ios-locked" style="font-size:20px;" ng-show="lugar.private"></p> 
</a> 

Y ми JSON Viene ася:

{ "Count" : 5, 
"Organization" : [ { "code" : "", 
    "hide" : false, 
    "id" : "1", 
    "name" : "Odebret Advisors Ltda.", 
    "private" : false 
    }, 
    { "code" : "", 
    "hide" : false, 
    "id" : "2", 
    "name" : "MOP Ruta 5 Sur (SCL - Talca)", 
    "private" : false 
    }, 
    { "code" : "", 
    "hide" : false, 
    "id" : "3", 
    "name" : "MOP Ruta 5 Norte (SCL - Los Vilos)", 
    "private" : false 
    }, 
    { "code" : "", 
    "hide" : false, 
    "id" : "4", 
    "name" : "Lixsys SpA", 
    "private" : true 
    }, 
    { "code" : "lxspa", 
    "hide" : true, 
    "id" : "5", 
    "name" : "Prueba Oculta", 
    "private" : false 
    } 
], 
"status" : 1 
} 

Как вы можете видеть, есть поле "скрыть", если верно, необходимо скрыть, что организация а также поле «код» - это единственный код, который нужно найти и должен быть введен FULL, тогда как если мы будем фильтровать по имени, вы можете различить его на 1 пункт.

ответ

1

EDIT: Это предполагает, что код содержится в вашем параметре filter:search, так как вы не сделали укажите, где пользователь вводит код.

Вы бы лучше создать свой собственный фильтр:

.filter('esVisible', function() { 
    return function (lugares, search) { 
    var lugaresVisibles = []; 
    for (var i = 0, ii = lugares.length; i < ii; i++) { 
     if (!lugares[i].hide) { 
     lugaresVisibles.push(lugares[i]); 
     } else if (lugares[i].code == search) { 
     lugaresVisibles.push(lugares[i]); 
     } 
    } 
    return lugaresVisibles; 
    }; 
}); 

Если вы используете другую утилиту библиотеки JS, а также как LazyJS, вы, вероятно, может упростить цикл довольно легко.

В конце концов ваш ngRepeat будет выглядеть следующим образом:

ng-repeat="lugar in organizations_all | esVisible:search" 

Примечание: проверялось, но, надеюсь, вы поняли идею.

2

просто использовать & & Постулаты в нг-шоу так

так для ввода поиска, если у вас есть

ng-model="searchInput" 

и в контроллере у вас есть

$scope.searchInput 

затем ng-show вы можете сделать

ng-show="!lugar.hide && lugar.code == searchInput" 

Тогда он будет показывать их только в том случае, если hide установлен в false и если они набрали код. Или, если вы хотите, чтобы показать это, даже если скрыть это правда, но они ввели в код, который вы можете сделать

ng-show ="!lugar.hide || lugar.code == searchInput" 
+0

даже не работает для меня, я пытаюсь адаптироваться к моей проблеме. – NHTorres

+0

Я использовал это несколько раз в нескольких приложениях, и он действительно работает. вы использовали && || сравнения и логические операторы раньше? –

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