作为ng-repeat自定义过滤器的Typescript方法不按预期运行

qor*_*ond 3 javascript angularjs typescript

module ngrFilter{
    'use strict';

    export class UsersCtrl {

        public userCollection: any[];
        public userFilter: string;

        constructor(){
            this.userCollection = [{id:1,name:'John',surname:'Klopper'},
                                   {id:2,name:'Mary',surname:'Schoeman'}];
        }

        public filterUser(user){
            //The this is undefined when using as a custom filter for ng-repeat
            console.log(this.userFilter)

            if(user.name == this.userFilter ||
               user.surname == this.userFilter){
              return true;
            }  
        }
    }

    angular
        .module('ngrFilter',[])
        .controller('UsersCtrl', UsersCtrl);
}
Run Code Online (Sandbox Code Playgroud)

使用自定义过滤器进行ng-repeat this时,filterUser方法中的属性未定义.有没有办法让这个过滤器工作或我只是做一些愚蠢的事情.

我也尝试在这里添加代码示例:http://fiddlesalad.com/typescript/custom-ngrepeat-filter/

han*_*aad 6

使用公共字段作为过滤函数,而不是方法,可以为此创建一个闭包.

export class UsersCtrl {
    public userCollection: any[];
    public userFilter: string;
    public filterUser: (User) => boolean;

    constructor(){
        this.userCollection = [{id:1,name:'John',surname:'Klopper'},
                               {id:2,name:'Mary',surname:'Schoeman'}];
        var self = this;
        this.filterUser = function(user:User) {
            return self./*...*/;      
        }
    }
}
Run Code Online (Sandbox Code Playgroud)