骨干观察得到"这"嵌套函数中的上下文

时间:2015-06-23 18:01:13

标签: javascript jquery backbone.js

我有一个骨干视图类,其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.
              });
            }
          }
        });
      },
      ...
    });
  }
});

在上面的示例中(具有深层次的嵌套函数作用域),我正在为按钮单击编写一个事件处理程序。在此事件处理程序中,我必须访问主干视图对象,并从该对象访问集合对象并对属于此集合的模型执行保存

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

还有其他[更好]的方法来应对这种情况吗?

0 个答案:

没有答案