Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从回调中访问成员变量?_Javascript_Jquery Ui_Backbone.js - Fatal编程技术网

Javascript 如何从回调中访问成员变量?

Javascript 如何从回调中访问成员变量?,javascript,jquery-ui,backbone.js,Javascript,Jquery Ui,Backbone.js,我有一个简单的主干视图,它使用jQueryUI的按钮 例如,我有一个删除按钮,它应该删除模型(和视图)。我使用以下方法将按钮添加到渲染方法中的视图中: var self = this; $(this.el).find("#deleteButton").button({text : false}); $(this.el).find("#deleteButton").bind( "click", self.deleteView); 然后我在视图中有了相应的方法: deleteView: funct

我有一个简单的主干视图,它使用jQueryUI的按钮

例如,我有一个删除按钮,它应该删除模型(和视图)。我使用以下方法将按钮添加到渲染方法中的视图中:

var self = this;
$(this.el).find("#deleteButton").button({text : false});
$(this.el).find("#deleteButton").bind( "click", self.deleteView);
然后我在视图中有了相应的方法:

deleteView: function(){
    console.log(this.model);
}
调用“deleteView”方法,但它会将“undefined”打印到控制台,因为“this”指的是按钮而不是视图。用“自我”代替“这个”也不管用。此外,将模型或视图作为参数传递给方法似乎不起作用,因为参数将是单击事件


使用主干处理此类回调的正确方法是什么?

当函数绑定为jQuery事件时,函数的上下文会发生变化

使用另一个函数,在该函数中使用
self
,或。
通过
$.proxy
维护上下文的示例:


您可能希望改用
主干。查看
事件属性。这是建议的方法,而不是在渲染期间手动使用jQuery将事件绑定到子元素

只需将以下内容添加到视图中即可:

events: {
    "click #deleteButton": "deleteView",

  },
events: {
    "click #deleteButton": "deleteView",

  },