2016-10-25 4 views
1

私はdroppableを要素に設定したバックボーンビューを持っています。私は '外部' addOperatorメソッドにアクセスしたいですか?それは関数ではないというエラーを返します。'functionInBackboneView'はJqueryの関数コンテキストではありません

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

答えて

1

私はあなたのイベントハンドラのコンテキスト内にあるので、あなたが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 
    } 
}); 
関連する問題