我的要求是我必须根据一个下拉值中的值过滤输入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”)。任何人都可以告诉我如何实现这一目标?
答案 0 :(得分:1)
您对提前输入的过滤只是通过提前输入而不是选定的代理进行过滤。 将过滤器更改为:
filter:{name: $viewValue, agency: selectedAgency}
它会起作用。
更新: 这是有效的,但是当你再次选择“全部”时,你将得不到任何结果。要解决此问题,请使用此过滤器:
filter:{name: $viewValue, agency: selectedAgency.length ? selectedAgency : undefined}
此过滤器将检查selectedAgency中的字符串是否为空,如果为空,则将代理的过滤器设置为undefined,这样就不会影响过滤器。