Javascript “主干视图获取”;这";嵌套函数中的上下文

Javascript “主干视图获取”;这";嵌套函数中的上下文,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我有一个主干视图类,其render()方法调用showCal()方法(通过一个插件,例如fullcalendar) showCal()方法有一个选项散列,内部有几个函数。比如说 showCal: function() { ... $('#somediv').fullCalendar({ }); 在上面的代码中,有另一个回调函数“eventDrop”,它显示qtip ... fullCalendar({ eventDrop: function() { $(someElement

我有一个主干视图类,其render()方法调用showCal()方法(通过一个插件,例如fullcalendar)

showCal()方法有一个选项散列,内部有几个函数。比如说

showCal: function() {
...
$('#somediv').fullCalendar({

});
在上面的代码中,有另一个回调函数“eventDrop”,它显示qtip

...
fullCalendar({
   eventDrop: function() {
     $(someElement).qtip({
     ));
   }
});
qtip本身有许多带有事件处理函数的html UI元素。所以嵌套作用域的完整层次结构看起来有点像这样

var MyView = Backbone.View.extend({
  ...
  render: function() {
    this.showCal();
  },
  ...
  showCal: function() {
    ...
    $(element).fullCalendar({
      ...
      eventDrop: function() {
        $(someElement).qtip({
          ...
          events: {
            render: function() {
              $(button).on('click', function(e) {
                ... code to handle the event.
              });
            }
          }
        });
      },
      ...
    });
  }
});
在上面的示例中(具有嵌套函数作用域的深层次),我正在为按钮单击编写一个事件处理程序。在这个事件处理程序中,我必须访问主干视图this对象,然后从该对象访问集合对象,并保存属于该集合的模型

两种直接方法是: i) 将模型对象作为“数据”属性存储到qtip元素中,并在这个嵌套的fn中直接进行ajax调用。但这将违反MVC原则,并导致一个黑客代码。 ii)在此嵌套fn中引发一个自定义事件,并在视图级别直接处理该事件,此时该事件将可用


有没有其他(更好的)方法来解决这种情况

最简单的方法可能是在事件处理程序的开头保存上下文,例如
showCal:function(){var self=this;..
然后使用它。最简单的方法可能是在事件处理程序的开头保存上下文,例如
showCal:function(){var self=this;..
然后使用它。