Javascript ';BackboneView和x27功能;不是Jquery中的函数上下文
我有一个主干视图,其中我将Javascript ';BackboneView和x27功能;不是Jquery中的函数上下文,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我有一个主干视图,其中我将droppable设置为一个元素。我想访问'outer'addOperator方法,但如何访问?它给出一个错误,表示它不是一个函数 var CanvasView = Backbone.View.extend({ el: "#canvas", render: function () { $("#canvas-container").droppable({ drop: this.handleDropEvent
droppable
设置为一个元素。我想访问'outer'addOperator
方法,但如何访问?它给出一个错误,表示它不是一个函数
var CanvasView = Backbone.View.extend({
el: "#canvas",
render: function () {
$("#canvas-container").droppable({
drop: this.handleDropEvent
});
},
addOuterOdperator: function (toolID) {
console.log(toolID);
console.log("outer");
},
handleDropEvent: function (event, ui) {
console.log("inside handle func");
var id = 0;
var addInnerOperator=function(ie){
console.log("inner");
};
addInnerOperator(id);
//this.addOuterOperator(id); gives an errror
}
});
我相信您在
this.addOuterOperator
中遇到了错误,因为您处于事件处理程序上下文中。为了避免这种情况,您可以尝试以下代码:
var CanvasView = Backbone.View.extend({
el: "#canvas",
render: function () {
var self = this; //creating a self reference
$("#canvas-container").droppable({
drop: function( event, ui ) {
self.handleDropEvent(event, ui, self); //passing the self reference
}
});
},
addOuterOdperator: function (toolID) {
console.log(toolID);
console.log("outer");
},
handleDropEvent: function (event, ui, selfRef) {
console.log("inside handle func");
var id = 0;
var addInnerOperator=function(ie){
console.log("inner");
};
addInnerOperator(id);
selfRef.addOuterOperator(id); //accessing the function via selfRef
}
});