Javascript объект, доступ к его свойствам - PullRequest
0 голосов
/ 02 марта 2012

Я пытаюсь создать объект в javascript, который запускает анимацию, которая вызывает другой метод, когда завершается.

function panel_manager() {
    this.animating = false;

    this.doAnimate = function (nPanel) {
        //if we're still moving panels, do nothing
        if(this.animating) return;

        this.animating = true;

        //enlarge new panel
        $("#panel" + this.focusedPanel).animate({width:"115px"},1000, this.endAnim);
    }

    this.endAnim = function () { alert("called"); this.animating = false; }
}

Для краткости была вырезана целая партия, и этот код работает, когда онвнутри объекта и использует глобальные переменные.Оповещение запускается, но анимация не меняется.

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

переменных.

function panel_manager() {
    var that = this;
    this.animating = false;
    this.doAnimate = function (nPanel) {
        if(this.animating) return;
        this.animating = true;
        $("#panel" + this.focusedPanel).animate({width:"115px"},1000, that.endAnim);
    }
    this.endAnim = function () { alert("called"); that.animating = false; }
}
0 голосов
/ 02 марта 2012

Внутри this.doAnimate добавьте $ .proxy.

var callback = $.proxy( this.endAnim, this );

$("#panel" + this.focusedPanel).animate({width:"115px"},1000, callback);

В основном проблема в том, что вы теряете значение this, когда назначаете его для обратного вызова, подобного этому. прокси-сервер удостоверится, что функция вызывается с правильным значением this.

ура!

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