Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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 ';BackboneView和x27功能;不是Jquery中的函数上下文_Javascript_Jquery_Backbone.js - Fatal编程技术网

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
    }
});