#javascript #jquery #backbone.js
#javascript #jquery #backbone.js
Вопрос:
У меня есть представление Backbone, в котором я устанавливаю droppable
значение элемента. Я хочу получить доступ к внешнему 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
}
});
Ответ №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
}
});