将事件绑定到对象内的函数

土井狂热

一般来说,我正在遇到jQuery / JS的一个特殊问题。

我正在处理一个JS文件,该文件可让我为客户端站点创建portlet。我正在SignalR用来将更改传达给用户。

以下代码让我有些头疼,为什么它不起作用。

Eenheden: function (poPortlet) {
        this.moPortlet = poPortlet;
        this.Init = function () {
           $(this.moPortlet).find('.portlet-title').text($(this.moPortlet).attr('data-cpv-type') + ' Eenheden')
        };
        this.BindHub = function () {
           CPV.moHub.on('onEenheidUpdate', this.Events.Update);
        };
        this.Events = {
           Update: function (pnId, psStatus) {
              CPV.Log('Error', 'Update: ' + pnId + ' ' + psStatus);
           }
        };
     }

我试图this.Events.UpdateSignalR事件绑定功能onEenheidUpdate这些Eenheiden对象的实例在页面上不是唯一的。想法是它们包含相同的数据,但是可以进行过滤,从而根据某些配置创建不同的portlet。

我的问题是该onEenheidUpdate函数不会触发适当的事件。我想这样做,以便可以使用为唯一对象设置的引用,例如在初始化时设置的jQuery对象。

乔希·威廉克(JoshWillik)

问题

您的问题是,当jQuery或javascript通常触发事件回调时,“上下文”(的值this)将被更改。例如

var MyModule = {
    init: function () {
        $('.amazing-element').on('click', function () {
            // This breaks because `
            // `this` is not MyModule
            // When the callback is triggered
            // `this` is `<p class="amazing-element"></p>`
            this.onClick()
        })
    },
    onClick: function () {
        console.log('wee, I was clicked')
    }
}

Function.prototype.bind抢救!

var MyModule = {
    init: function () {
        $('.amazing-element').on('click', function () {
            this.onClick()
        }.bind(this))
        // ^ here we bind the context of the callback to the
        // correct version of `this`.
    },
    onClick: function () {
        console.log('wee, I was clicked')
    }
}

因此,您的确切示例如下所示:

Eenheden: function (poPortlet) {
    this.moPortlet = poPortlet;
    this.Init = function () {
       $(this.moPortlet).find('.portlet-title').text($(this.moPortlet).attr('data-cpv-type') + ' Eenheden')
    };
    this.BindHub = function () {
       CPV.moHub.on('onEenheidUpdate', this.Events.Update.bind(this));
                                                      // ^ change here
    };
    this.Events = {
       Update: function (pnId, psStatus) {
          CPV.Log('Error', 'Update: ' + pnId + ' ' + psStatus);
       }
    };
 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将事件绑定到多个对象

来自分类Dev

无法将事件绑定到对象方法

来自分类Dev

将buttonClick()事件绑定到PHP函数

来自分类Dev

将buttonClick()事件绑定到PHP函数

来自分类Dev

将事件绑定到泛型函数

来自分类Dev

将点击事件绑定到 Javascript 函数

来自分类Dev

如何将函数绑定到对象?

来自分类Dev

angular2将事件绑定到可观察对象

来自分类Dev

无法将事件绑定到包含jquery对象的数组

来自分类Dev

将事件绑定到链接函数中指令的子元素

来自分类Dev

使用.on()正确将click事件绑定到函数

来自分类Dev

将预定义函数绑定到Jquery事件

来自分类Dev

将click事件绑定到AngularJS指令内的子元素

来自分类Dev

如何将参数对象绑定到JavaScript中的函数?

来自分类Dev

如何将函数绑定到对象属性?

来自分类Dev

使用 jQuery 实用地测试特定事件处理程序(函数)是否绑定到对象的事件

来自分类Dev

每个内的jQuery仅将函数绑定到最终项目

来自分类Dev

使用未命名函数将元素绑定/取消绑定到JS事件处理程序

来自分类Dev

在Ember 2中,将on = keypress事件绑定到{{input}}时,我无法获得事件对象

来自分类Dev

无法将member_removed pusher事件绑定到另一个事件的绑定函数中

来自分类Dev

将promise绑定到函数

来自分类Dev

将带有对象的函数绑定到jQuery'change'事件处理程序

来自分类Dev

将事件绑定到两个函数并在一个函数中解除绑定时

来自分类Dev

绑定到 ngFor 内的对象数组,将所有输入绑定在一起

来自分类Dev

有没有办法将事件绑定到javascript中的常规对象?

来自分类Dev

有没有办法将事件绑定到javascript中的常规对象?

来自分类Dev

将ComboBox绑定到Displaymember到对象

来自分类Dev

Javascript / AngularJS:将函数绑定到每个对象还是创建辅助对象?

来自分类Dev

Javascript / AngularJS:将函数绑定到每个对象还是创建辅助对象?

Related 相关文章

  1. 1

    将事件绑定到多个对象

  2. 2

    无法将事件绑定到对象方法

  3. 3

    将buttonClick()事件绑定到PHP函数

  4. 4

    将buttonClick()事件绑定到PHP函数

  5. 5

    将事件绑定到泛型函数

  6. 6

    将点击事件绑定到 Javascript 函数

  7. 7

    如何将函数绑定到对象?

  8. 8

    angular2将事件绑定到可观察对象

  9. 9

    无法将事件绑定到包含jquery对象的数组

  10. 10

    将事件绑定到链接函数中指令的子元素

  11. 11

    使用.on()正确将click事件绑定到函数

  12. 12

    将预定义函数绑定到Jquery事件

  13. 13

    将click事件绑定到AngularJS指令内的子元素

  14. 14

    如何将参数对象绑定到JavaScript中的函数?

  15. 15

    如何将函数绑定到对象属性?

  16. 16

    使用 jQuery 实用地测试特定事件处理程序(函数)是否绑定到对象的事件

  17. 17

    每个内的jQuery仅将函数绑定到最终项目

  18. 18

    使用未命名函数将元素绑定/取消绑定到JS事件处理程序

  19. 19

    在Ember 2中,将on = keypress事件绑定到{{input}}时,我无法获得事件对象

  20. 20

    无法将member_removed pusher事件绑定到另一个事件的绑定函数中

  21. 21

    将promise绑定到函数

  22. 22

    将带有对象的函数绑定到jQuery'change'事件处理程序

  23. 23

    将事件绑定到两个函数并在一个函数中解除绑定时

  24. 24

    绑定到 ngFor 内的对象数组,将所有输入绑定在一起

  25. 25

    有没有办法将事件绑定到javascript中的常规对象?

  26. 26

    有没有办法将事件绑定到javascript中的常规对象?

  27. 27

    将ComboBox绑定到Displaymember到对象

  28. 28

    Javascript / AngularJS:将函数绑定到每个对象还是创建辅助对象?

  29. 29

    Javascript / AngularJS:将函数绑定到每个对象还是创建辅助对象?

热门标签

归档