2016-09-10 1 views
0

ECMAScript 6Вызов метода в том же классе: Uncaught ошибка типа: this.hide_controls не является функцией

В HTML У меня есть кнопка с идентификатором = «обновление» и некоторые другие элементы управления с классом = "контроль ». Когда я нажимаю кнопку «Обновить», другие элементы управления должны исчезнуть.

Когда я нажимаю кнопку «Обновить», я получаю: «Ошибка типа« uncaught »: this.hide_controls не является функцией».

Это может помочь: если я остановлюсь в точке останова (см. «Отладчик» в коде), то «это» равно кнопке # update.btn.btn-default.control.

Не могли бы вы помочь мне вызвать метод hide_controls.

class ButtonManager{ 

    constructor(){ 
     this.init_main_object_buttons(); 
    } 

    init_main_object_buttons(){ 
     this._main_object_update_button = $("#update"); 
     this._main_object_update_button.click(this.update_main_object); 
     this._controls = $(".control"); 
    } 

    hide_controls(){ 

     this._controls.addClass("hide"); 
    } 

    update_main_object(){ 
     debugger; 
     this.hide_controls(); 
     ... 
    } 
} 
+0

Возможный дубликат [Как получить доступ к правильному \ 'этому \'/контексту внутри обратного вызова?] (Http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context -indide-a-callback) –

+0

Методы класса не распознаются. Он работает точно так же, как и в ES5. –

ответ

0

Изменение этой линии

this._main_object_update_button.click(this.update_main_object);

к этому

this._main_object_update_button.click(this.update_main_object.bind(this));

это будет связывать сферу вызова метода для текущего экземпляра. this будет равен экземпляру ButtonManager, как вы хотели бы этого.