当前位置: 首页 > 知识库问答 >
问题:

ES6在点击事件上执行函数[重复]

颛孙森
2023-03-14

这是我代码的一小部分。问题就在于此。“this”下面的代码引用了HomeView类,因为我这样做了。_changeLanguage.bind(this)。如果我移除绑定(this)部分,那么它将引用li元素,但我无法调用它。\ u renderHTML()方法。

class HomeView extends BaseView{

    constructor(model){
        super(null, model);
    }

    _renderHTML(){
        this.$view.html(template(this.model));
        return this.$view;
    }

    _init(){
        this.$view.on("click", "#langs li", this._changeLanguage.bind(this));
    }

    _changeLanguage(){
        console.log($(this).data("lang"));
        this._renderHTML();
    }

}

在这样的单击事件上运行_changeLanguage方法的最干净的方法是什么。

共有1个答案

薛元忠
2023-03-14

您应该能够这样编写您的_changeLanguage()方法:类HomeView扩展BaseView{

    _changeLanguage = () => {
        console.log($(this).data("lang"));
        this._renderHTML();
    };
}

fat arrow语法为您提供了对的隐式绑定,因此您可以将其他代码更改为:

_init(){
    this.$view.on("click", "#langs li", this._changeLanguage);
}

因此,没有更多的bind()...这都是隐式的,这要归功于ES6。

 类似资料:
  • 问题内容: 我在从React中的表行调用click事件时遇到麻烦。下面是我的代码。我有一个单独的函数来单独填充行,但似乎我弄乱了绑定信息。 } 问题答案: 首先,您要传递一个评估函数调用到您的属性。 单独查看以下代码: 您期望的输出为“ hello bob”。 如果我将其传递给prop,则完全相同。例如: 在这种情况下,我只是将字符串传递给按钮的prop。的(和其他事件的道具)希望被提供的功能(或

  • 函数功能:点击控件 函数方法 widget.click(wid) 参数 类型 必填 说明 wid string 是 控件对象 函数用例 --脚本页面点击新建脚本按钮 --除控件函数外请勿将其他积木编程函数用于触动精灵,同理请勿将触动精灵函数用于积木编程 mSleep(1000) wid=widget.find({["id"]="com.play4u.luabox:id/iv_script_new"

  • 我写了一个名为formatAMPM的函数来查找当前时间。我想调用这个函数,当我点击名为按钮的对象。但是我没有成功。 我想根据这里的结果更新文本框的值

  • 问题内容: 我正在使用ColdFusion从数据库中提取数据到dataTable中,我希望当我单击datatable中的一行并触发事件时,该行的详细信息可以在同一页面上的div中显示。 下面是我正在使用的代码,但它无法正常工作,如果有人可以给我一个有效的示例,我将不胜感激 我收到以下错误消息: 错误-无法读取未定义的属性’_aData’ 问题答案: 在重新分配按钮之前,请尝试取消绑定该按钮的事件:

  • 问题内容: 对于我的wordpress网站php文件之一,我具有以下代码: 因此,它将把文件调用到该部分。 但是,我要使其仅在单击选项卡时执行或调用。 调用或执行该函数的jQuery是什么? 编辑: 因此,我想要实现的目标类似于Ajax。由于在单击选项卡之前不会调用该函数,因此浏览器不必调用不必要的文件并降低页面速度。 让我知道您是否认为这是最好的方法。 谢谢! 问题答案: 尽管拉斐尔(Rapha

  • 函数名称:点击 函数功能: 模拟点击屏幕,按下抬起一次 函数方法 event.tap(x,y) 参数 类型 必填 说明 x number 是 屏幕横坐标 y number 是 屏幕纵坐标 函数用例 点击屏幕 --仅支持安卓 7 及其以上系统 --在坐标 (150, 550)按下、抬起 event.tap(150, 550); mSleep(30) 注意事项 点击后可以加适量的延时 仅支持安