如何使用Angular JS

时间:2016-07-05 10:00:52

标签: angularjs json angular-ui-typeahead

我的要求是我必须根据一个下拉值中的值过滤输入JSON数据意味着如果下拉值是“agency1”那么我可以在“代理”中显示仅具有“代理1”值的JSON对象的值“关键。

我的JSON就是这个 -

 $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"
  }


];

我通过一个函数获得该下拉列表的值并存储其值 -

$scope.listByCategory= function(){

$scope.result=$scope.selectedAgency;
}

in typeahead我这样给予 -

<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 个答案:

答案 0 :(得分:1)

您对提前输入的过滤只是通过提前输入而不是选定的代理进行过滤。 将过滤器更改为:

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

它会起作用。

更新: 这是有效的,但是当你再次选择“全部”时,你将得不到任何结果。要解决此问题,请使用此过滤器:

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

此过滤器将检查selectedAgency中的字符串是否为空,如果为空,则将代理的过滤器设置为undefined,这样就不会影响过滤器。