Javascript AngularJS按其他选择标记筛选一个选择

Javascript AngularJS按其他选择标记筛选一个选择,javascript,angularjs,filter,html-select,ng-options,Javascript,Angularjs,Filter,Html Select,Ng Options,我有这个JSON模型。我必须展示独特的价值观,但这个问题我已经解决了 vm.listsData = [ { "id": null, "list": { "listId": 100, "listName": "10-AU-COUNTRIES", "filterId": null, "filterName": null }, "fileFormat": "FIRCOSOFT",

我有这个JSON模型。我必须展示独特的价值观,但这个问题我已经解决了

vm.listsData = [
    {
      "id": null,
      "list": {
        "listId": 100,
        "listName": "10-AU-COUNTRIES",
        "filterId": null,
        "filterName": null
      },
      "fileFormat": "FIRCOSOFT",
      "exportMode": "FULL",
      "fileExtension": "fircosoft"
    },
    {
      "id": null,
      "list": {
        "listId": 101,
        "listName": "10-AU-COUNTRIES (Watchlist)",
        "filterId": 20,
        "filterName": "Filter 1"
      },
      "fileFormat": "WATCHLIST",
      "exportMode": "FULL",
      "fileExtension": "zip"
    }
    ...
]
在该视图中,选择以下选项:

<div class="col-md-3">
    <select 
        class="form-control"
        ng-model="vm.formatList"
        ng-options="item as item.fileFormat for item in vm.listsFormat">
    </select>
</div>

<div class="col-md-3">
    <select 
        class="form-control"
        ng-model="vm.exportMode"
        ng-options="item as item.exportMode for item in vm.listsExportMode"></select>
</div>

<div class="col-md-3">
    <select 
        class="form-control"
        ng-model="vm.listName"
        ng-options="item.list.listId as item.list.listName for item in vm.listsName"></select>
</div>
<div class="col-md-3">
    <select 
        class="form-control"
        ng-model="vm.fileExtension"
        ng-options="item as item.fileExtension for item in vm.listsFileExtension"></select>
</div>

有没有办法根据其他选择值对每个选择进行筛选


谢谢你的每一点

这可能会对你有所帮助。根据场景写出自己的风格

angular.module(“firstApp”,[])
.controller('MainCtrl',函数($scope){
var vm=这个;
vm.listsData=[
{
“id”:空,
“名单”:{
“listId”:100,
“名单名称”:“10个非盟国家”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“FIRCOSOFT”,
“exportMode”:“完整”,
“文件扩展名”:“fircosoft”
},
{
“id”:空,
“名单”:{
“listId”:101,
“名单名称”:“10个非盟国家(观察名单)”,
“filterId”:20,
“过滤器名称”:“过滤器1”
},
“文件格式”:“监视列表”,
“exportMode”:“完整”,
“文件扩展名”:“zip”
},
{
“id”:空,
“名单”:{
“listId”:102,
“名单名称”:“10个非盟国家(观察名单2)”,
“过滤器ID”:21,
“过滤器名称”:“过滤器2”
},
“文件格式”:“监视列表”,
“exportMode”:“完整”,
“文件扩展名”:“csv”
},
{
“id”:空,
“名单”:{
“listId”:103,
“名单名称”:“10个非盟国家”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“REGLISS”,
“导出模式”:“添加模块”,
“文件扩展名”:“csv”
},
{
“id”:空,
“名单”:{
“listId”:104,
“名单名称”:“10个非盟国家”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“安全观察”,
“exportMode”:“完整”,
“文件扩展名”:“txt”
},
{
“id”:空,
“名单”:{
“listId”:105,
“名单名称”:“10个非盟国家”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“安全观察”,
“导出模式”:“添加模块”,
“文件扩展名”:“txt”
},
{
“id”:空,
“名单”:{
“listId”:105,
“名单名称”:“10个非盟国家”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“警惕”,
“exportMode”:“完整”,
“文件扩展名”:“txt”
},
{
“id”:空,
“名单”:{
“listId”:106,
“名单名称”:“10个非盟国家”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“警惕”,
“exportMode”:“完整”,
“文件扩展名”:“csv”
},
{
“id”:空,
“名单”:{
“listId”:107,
“名单名称”:“10个非盟国家”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“警惕”,
“导出模式”:“添加模块”,
“文件扩展名”:“txt”
},
{
“id”:空,
“名单”:{
“listId”:108,
“名单名称”:“10个非盟国家”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“警惕”,
“导出模式”:“添加模块”,
“文件扩展名”:“csv”
},
{
“id”:空,
“名单”:{
“listId”:空,
“名单名称”:“全球加OFAC”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“REGLISS”,
“exportMode”:“完整”,
“文件扩展名”:“csv”
},
{
“id”:空,
“名单”:{
“listId”:空,
“名单名称”:“全球加OFAC”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“警惕”,
“exportMode”:“完整”,
“文件扩展名”:“txt”
},
{
“id”:空,
“名单”:{
“listId”:空,
“名单名称”:“全球加OFAC”,
“filterId”:空,
“filterName”:空
},
“文件格式”:“警惕”,
“exportMode”:“完整”,
“文件扩展名”:“csv”
}
];
//删除重复的值
功能uniqueByKey(arr、key、OptionalNestedBJ){
var值={};
返回arr.filter(函数(项){
瓦尔
if(项目类型[键]=“字符串”){
val=项目[关键];
}
否则{
val=item[key][optionalNestedObj]//本例中的列表名
}
var exists=值[val];
值[val]=真;
返回!存在;
});
}
//滤器
vm.filterTest=函数(){
返回函数(项目){
log(“vm.exportMode:,vm.exportMode”);
console.log(“item.exportMode:”,item.exportMode);
如果(item.exportMode==vm.exportMode['fileFormat']){
返回true;
}
日志(“项:”,项)
返回false;
}
}
vm.listsFormat=uniqueByKey(vm.listsData,'fileFormat');
vm.listsExportMode=uniqueByKey(vm.listsData,'exportMode');
vm.listsName=uniqueByKey(vm.listsData,'list','listName');
vm.listsFileExtension=uniqueByKey(vm.listsData,'fileExtension');
})

JS-Bin
{{vm.formatList}json}
{{vm.exportMode}json}
    <!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.5.x" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js" data-semver="1.5.11"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl">
    <div class="col-md-3">
            {{formatList | json}}
            <select 
        class="form-control"
        ng-model="formatList"
        ng-options="item as item.fileFormat for item in (listsFormat | filter:exportMode|filter:listName|filter:fileExtension) track by item.fileFormat">
    </select>
        </div>
        <div class="col-md-3">
    <select 
        class="form-control"
        ng-model="exportMode"
        ng-options="item as item.exportMode for item in (listsExportMode| filter:formatList|filter:listName|filter:fileExtension)  track by item.exportMode"></select>
</div>
<div class="col-md-3">
    <select 
        class="form-control"
        ng-model="listName"
        ng-options="item.list.listId as item.list.listName for item in (listsName| filter:formatList|filter:listName|filter:fileExtension)  track by item.list.listName"></select>
</div>
<div class="col-md-3">
    <select 
        class="form-control"
        ng-model="fileExtension"
        ng-options="item as item.fileExtension for item in (listsFileExtension| filter:formatList|filter:listName|filter:fileExtension) track by item.fileExtension"></select>
</div>
  </body>

</html>