AngularJS-筛选器没有值
1。这是我的supportDoc$scope:AngularJS-筛选器没有值,angularjs,angularjs-filter,Angularjs,Angularjs Filter,1。这是我的supportDoc$scope: var supportDoc = this; ...... supportDoc.docs = data; data-ng-repeat="doc in supportDoc.docs | $uniqueFilter: doc.icon" /*@ngInject */ $uniqueFilter.$inject = []; ng.module('app.Shared.Layout').filter('$uniqueFilter', $uniqu
var supportDoc = this;
......
supportDoc.docs = data;
data-ng-repeat="doc in supportDoc.docs | $uniqueFilter: doc.icon"
/*@ngInject */
$uniqueFilter.$inject = [];
ng.module('app.Shared.Layout').filter('$uniqueFilter', $uniqueFilter);
function $uniqueFilter(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;
};
2。我的ng重复:
var supportDoc = this;
......
supportDoc.docs = data;
data-ng-repeat="doc in supportDoc.docs | $uniqueFilter: doc.icon"
/*@ngInject */
$uniqueFilter.$inject = [];
ng.module('app.Shared.Layout').filter('$uniqueFilter', $uniqueFilter);
function $uniqueFilter(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;
};
3。和我的过滤器:
var supportDoc = this;
......
supportDoc.docs = data;
data-ng-repeat="doc in supportDoc.docs | $uniqueFilter: doc.icon"
/*@ngInject */
$uniqueFilter.$inject = [];
ng.module('app.Shared.Layout').filter('$uniqueFilter', $uniqueFilter);
function $uniqueFilter(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;
};
等等,我仍然收到相同的错误:
TypeError:无法读取未定义的属性“length”
at对象。$uniqueFilter()
在Object.e[作为调用]()
at对象。$get()
在Object.e[作为调用]()
在
在Object.d[as get]()
在$get[as$filter]()
在ib.filter()处
在ib.filterChain()处
在ib.statements()处
尝试使用angular.forEach之类的工具来避免错误
angular.forEach(input,function(row){
if (typeof unique[row[key]] == "undefined") {
unique[row[key]] = "";
uniqueList.push(row);
}
});
试试这个:
ngRepeat: doc in supportDoc.docs | $uniqueFilter: 'icon'
筛选器函数应返回另一个函数
module.filter('$uniqueFilter',函数(){
返回$uniqueFilter;
})
文档:正如Vinay K所提到的,您的过滤器可以查看:
/*@ngInject */
$uniqueFilter.$inject = [];
ng.module('app.Shared.Layout').filter('$uniqueFilter', $uniqueFilter);
function $uniqueFilter() {
return function(input, key) {
var unique = {};
var uniqueList = [];
angular.forEach(input,function(row){
if (typeof unique[row[key]] == "undefined") {
unique[row[key]] = "";
uniqueList.push(row);
}
});
return uniqueList;
}
}
您能发布stacktrace吗?首先,过滤器的使用是第一个-->|$uniqueFilter:icon
。你可以忘记另一个我试过了,它不起作用。对不起,我错了!它必须与模型匹配,因此,第三个:supportDoc.docs.icon
通常不应使用$name
语法,因为$--
通常表示angular的内部方法/etc。