2016-07-05 2 views
1

. Мое требование состоит в том, что я должен фильтровать входные данные JSON на основе значения в одном выпадающем значении, если выпадающее значение является «агентством1», тогда я могу показать значения только того объекта JSON, который имеет значение «агент 1» в ключе агентства.как фильтровать typeahead на основе определенного значения выпадающего списка с использованием Angular JS

My JSON является this-

$scope.myAgencies= [ 



    { 
    "agency": "Agency1", 
    "category" : "Plan", 
    "name" : "ABC plan8", 
    "type" : "BHC Plan" 
    }, 
    { 
    "agency": "Agency1", 
    "category" : "Plan", 
    "name" : "ABC plan", 
    "type" : "PHC" 
    }, 
    { 
    "agency": "Agency2", 
    "category" : "Plan", 
    "name" : "LMN plan", 
    "type" : "CHC" 
    }, 
    { 
    "agency": "Agency2", 
    "category" : "Plan", 
    "name" : "ABC plan", 
    "type" : "BHC Plan" 
    }, 
    { 
    "agency": "Agency3", 
    "category" : "Plan", 
    "name" : "ABC plan", 
    "type" : "PHC" 
    }, 
    { 
    "agency": "Agency3", 
    "category" : "Plan", 
    "name" : "ABC quote", 
    "type" : "CHC" 
    }, 
    { 
    "agency": "Agency3", 
    "category" : "Plan", 
    "name" : "LMN Quote", 
    "type" : "PHC" 
    } 


]; 

Я получаю значение этого выпадающего списка с помощью одной функции и сохранять свое значение как this-

$scope.listByCategory= function(){ 

$scope.result=$scope.selectedAgency; 
} 

в машинописный Я даю как this-

<input type="text" ng-model="customSelected" id="inputTypeahead" placeholder="Custom agency" typeahead="agency.result as agency.name for agency in myAgencies | filter:$viewValue" typeahead-template-url="agencyTemplate.html" class="form-control"> 

Я создал плункер здесь https://plnkr.co/edit/HNgxjCajodFM6onsRMQH?p=preview Моя проблема заключается в том, что она фильтруется на основе «агентства» не для определенной ценности «агентства» (означает выбранное значение выпадающего списка, например «agency1»). Может ли кто-нибудь сказать мне, как я могу это достичь?

ответ

1

Фильтр для типа «вперед» фильтрует только вход типа «вперед», а не выбранное агентство. Изменить фильтр к этому:

filter:{name: $viewValue, agency: selectedAgency} 

И это будет работать.

Обновление: Это работает, но при повторном выборе «Все» вы не получите никаких результатов. Чтобы исправить это, используйте этот фильтр:

filter:{name: $viewValue, agency: selectedAgency.length ? selectedAgency : undefined} 

Этот фильтр будет проверить, если строка в selectedAgency не является пустым, и если он пуст, будет установлен фильтр для агентства по неопределенным, поэтому он не будет влиять на фильтр ,

+0

Его работы. Большое спасибо Рон Дадон! – Aanchal

+0

Я пытаюсь поместить данные JSON во внешний файл, его имя будет agency.json. Затем, как мне получить значения json из этого файла и применить аналогичный фильтр на основе выбранного агентства? @RonDadon – Aanchal

+0

Вам нужно прочитать его, используя, например, службу $ http. https://docs.angularjs.org/api/ng/service/$http –

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