Передача переменных класса в метод класса в Prototype через addEventListener - PullRequest
0 голосов
/ 23 июля 2010

У меня есть следующий файл класса, который я пытаюсь создать.Я хотел бы передать несколько переменных в метод с помощью eventListener, но код, который я имею ниже, не работает, вероятно, из-за ограниченности.Не уверен, что я должен изменить, хотя.Любой совет будет высоко ценится.

var MyClass= new Class.create();
MyClass.prototype = {
    initialize: function(id,name,top,left){
        try{
            this.id = id;
            this.name = name;
            this.currentTop = top;
            this.currentLeft = left;

            $(id).addEventListener("mousedown",function(event,this.id,this.name){
                this.grabOBJ(event,this.id,this.name);
            },false);

        }
        catch(error){alert(error);}
    },
    grabOBJ:function(event,myID,myName){
        // do something here with myID and myName
    }
};

1 Ответ

0 голосов
/ 23 июля 2010

Ваш синтаксис совершенно неверный.

Вместо этого вы должны создать отдельную переменную для хранения действительного this, например:

var MyClass= new Class.create();
MyClass.prototype = {
    initialize: function(id,name,top,left){
        try{
            this.id = id;
            this.name = name;
            this.currentTop = top;
            this.currentLeft = left;

            var self = this;

            $(id).addEventListener("mousedown",function(event){
                self.grabOBJ(event);
            }, false);

        }
        catch(error){alert(error);}
    },
    grabOBJ:function(event){
        // do something here with this.id and this.name
    }
};

Поскольку self.grabOBJ является обычным вызовом метода, его this будет MyClass экземпляром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...