我有一个下拉列表,工作正常
<select class="form-control" ng-model="cc.id">
<option value="">Chose Id</option>
<option ng-repeat="account in accounts |unique:'id'" value="{{account.id}}">{{name.id}}</option>
</select>
它在下拉列表中为我提供了以下选项
101
101
119
120
121
121
虽然它应该只显示选项中的唯一ID ...
101
119
120
121
帐户由jason数组帐户组成 act_id(主键) ID FNAME L-NAME 位置
您能告诉我如何修复ID上的唯一过滤器,以便它只显示唯一值谢谢
答案 0 :(得分:2)
我会使用Underscore库中的uniq
方法。
然后写一行:
$scope.new_accounts = _.uniq(accounts, false, function(p){ return p.id; });
演示 Fiddle
参考:
uniq_.uniq(array,[isSorted],[iterator])别名:唯一 生成数组的无副本版本,使用===来测试对象相等性。如果您事先知道数组已排序,则为isSorted传递true将运行更快的算法。如果要根据转换计算唯一项,请传递迭代器函数。
_.uniq([1, 2, 1, 3, 1, 4]);
=> [1, 2, 3, 4]
答案 1 :(得分:1)
根据this AngularJS没有唯一的过滤器 - AngularUI。
以上链接中的以下代码应该有所帮助:
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;
};
});
此外,您可以使用以下内容:
<select ng-model="accounts" ng-options="c.name for c in accounts"></select><br>
用于选择。
答案 2 :(得分:0)