Javascript 在主干网中处理移动屏幕方向

Javascript 在主干网中处理移动屏幕方向,javascript,jquery,backbone.js,backbone-views,Javascript,Jquery,Backbone.js,Backbone Views,以上是我的代码示例。每当路由器呈现一个视图时,它都会解除绑定所有附加到现有视图的事件,以便进行处理,并创建一个新视图。由于我已将onResize事件附加到window,因此对于someView的每个实例(从#某物导航到#另一物并返回到#某物,这将解除现有this.someView中所有事件的绑定,并创建一个新的this.someView实例),它将事件绑定到窗口,onResize方法将被多次触发,即使当前视图不在显示中(即,我的路由器可能会显示方法2中定义的一些其他视图)。我理解为什么它会被多次

以上是我的代码示例。每当路由器呈现一个视图时,它都会解除绑定所有附加到现有视图的事件,以便进行处理,并创建一个新视图。由于我已将onResize事件附加到window,因此对于someView的每个实例(从#某物导航到#另一物并返回到#某物,这将解除现有this.someView中所有事件的绑定,并创建一个新的this.someView实例),它将事件绑定到窗口,onResize方法将被多次触发,即使当前视图不在显示中(即,我的路由器可能会显示方法2中定义的一些其他视图)。我理解为什么它会被多次触发,但我想知道,到底是在主干网还是jQuery中处理这个问题,而不是将事件绑定到窗口的resize事件

另外,我没有使用jQuery.mobile,也不想使用任何额外的javascript插件,因为它会增加移动浏览器的负载。

只需添加jQuery unbind(关闭)即可在关闭时调整窗口大小功能:

var MyRouter = Backbone.Router.extend({
   router : {
         'something'    : 'method1',
         'anotherthing' : 'method2'

   },

   method1 : function () {
         if (!this.someView)
               this.someView.close()

         this.someView = new SomeView();
         $('someElement').append(this.someView.render().el);
   },

   method2 : function() {
     //do something
  }

});

var SomeView= Backbone.View.extend({

    initialize : function() {
        $(window).on('resize',_bind(this.onResize, this));
    },

    onResize : function() {
        alert('resized');
    },

     close : function() {
         this.remove();
         this.off();
         this.undelegateEvents();
     }

});
initialize : function() {
    _.bindAll(this, "onResize");// revent the need to use _.bind
    $(window).on('resize',this.onResize);
},   
close : function() {
     $(window).off('resize', this.onResize);
     this.remove();
     this.off();
     this.undelegateEvents();
 }