在同一个类中调用方法:未捕获类型错误:this.hide_controls不是函数

时间:2016-09-10 14:09:52

标签: ecmascript-6

ECMAScript 6

在html中我有一个id ="更新"和一些其他控制元素,类="控制"。当我按"更新"按钮,其他控件应该消失。

当我按下"更新"按钮,我得到:"未捕获类型错误: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();
        ...
    }
}

1 个答案:

答案 0 :(得分: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的实例,就像您希望的那样。