Angularjs 角度js过滤器/搜索和唯一选择

Angularjs 角度js过滤器/搜索和唯一选择,angularjs,select,filtering,Angularjs,Select,Filtering,我已经尝试了angular.js中识别唯一值的大多数SO答案。我是一个新手,但我的问题是尝试将这些值转换为select表单,并对表中的数据进行筛选 基本上,我有一些数据,我想在表格中显示它,在表格标题中,在该数据列中有一个唯一值的选择下拉列表,并且能够通过选择的值过滤显示的表格 我想用 app.filter('unique', function () { return function ( collection, keyname) { var output = [], keys = []

我已经尝试了angular.js中识别唯一值的大多数SO答案。我是一个新手,但我的问题是尝试将这些值转换为select表单,并对表中的数据进行筛选

基本上,我有一些数据,我想在表格中显示它,在表格标题中,在该数据列中有一个唯一值的选择下拉列表,并且能够通过选择的值过滤显示的表格

我想用

app.filter('unique', function () {
return function ( collection, keyname) {
var output = [],
    keys = []
    found = [];

if (!keyname) {

    angular.forEach(collection, function (row) {
        var is_found = false;
        angular.forEach(found, function (foundRow) {

            if (foundRow == row) {
                is_found = true;                            
            }
        });

        if (is_found) { return; }
        found.push(row);
        output.push(row);

    });
}
else {

    angular.forEach(collection, function (row) {
        var item = row[keyname];
        if (item === null || item === undefined) return;
        if (keys.indexOf(item) === -1) {
            keys.push(item);
            output.push(row);
        }
    });
}

return output;
};
});
我的html是这样的

    <th> Number:        
    <br/>
     <select ng-model="search.number"  
             ng-options="row.numberfor row in data | unique:'number'">
    <option value=""> </option>
    </select>
    </th>
结果证明这是可行的

<select ng-model="search.<?php echo $column; ?>" 
        ng-options="v for (k, v) in data 
                | orderBy:'<?php echo $column;?>' 
                | unique:'<?php echo $column;?>' ">
        <option value="">select</option>
</select>
卡在一个foreach中,该foreach查看CSV文件中的每一列


i、 e.传递任何csv的完整excel样式过滤。

仍在努力解决此问题。下面是使用上述方法的输出,过滤器似乎工作正常,但我在“选择选项以了解选择内容”字段中看不到任何值
<select ng-model="search.number" 
ng-options="row.numberfor row in data | unique:'number'"  
class="ng-pristine ng-valid">
<option value="" class=""> </option>
<option value="0">1023 456789</option>
<option value="1">1024 456789</option>
<option value="2">1025 456789</option>
<option value="3">1023 111999</option>
<option value="4">1024 111999</option>
</select>
/*          
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][key]);
        }
    }
    return uniqueList;
};
}); */
app.directive('mySelect', [function () {
  return {
    restrict: 'E',
    transclude: true,
    replace: true,
    template: '<select ng-options="key as value for (key, value) in myMap" ng-transclude></select>',
    link: function postLink(scope, element) {
      scope.myMap = {"1":"1","2":"2","3":"3"}; 
   // e.g. hashmap from server
    }
};
<select ng-model="search.<?php echo $column; ?>" 
        ng-options="v for (k, v) in data 
                | orderBy:'<?php echo $column;?>' 
                | unique:'<?php echo $column;?>' ">
        <option value="">select</option>
</select>