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