AngularJS:ng-options每个可能的字段值只添加一个

时间:2016-08-20 21:30:40

标签: javascript angularjs

假设我有一个类似于AngularJS ngOptions文档中的数组

[
  {name:'black', shade:'dark'},
  {name:'white', shade:'light', notAnOption: true},
  {name:'red', shade:'dark'},
  {name:'blue', shade:'dark', notAnOption: true},
  {name:'yellow', shade:'light', notAnOption: false}
];

...使用

<select ng-model="myColor" ng-options="color.name group by color.shade for color in colors">

产生......

dark  
  black  
  red  
  blue
light  
  white
  yellow

我想通过暗和光来过滤值,所以我想只是...

dark  
light

是否可以使用ng-options来实现这一目标?

2 个答案:

答案 0 :(得分:0)

使用像这样的过滤器

 <select ng-model="myColor" ng-options="color.shade for color in Colors | unique:'shade'"></select>

使用&#39; unique&#39;

添加AngularJS过滤器
app.filter('unique', function () {
return function (input, key) {
    var unique = {};
    var uniqueList = [];
    for (var i = 0; i < input.length; i++) {
        if (typeof unique[input[i][key]] == "undefined") {
            unique[input[i][key]] = "";
            uniqueList.push(input[i]);
        }
    }
    return uniqueList;
   };
 });

答案 1 :(得分:0)

您可以尝试添加像Alex所说的自定义过滤器,或者可以使用这样的默认过滤器(如果您只想在select中显示深色或浅色):

<select ng-model="myColor" ng-options="color.name group by color.shade for color in colors | { color: { shade: shadeModel }}">

shadeModel可能是'','暗'或'亮'