Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS-筛选器没有值_Angularjs_Angularjs Filter - Fatal编程技术网

AngularJS-筛选器没有值

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

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', $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。