【问题标题】:Remove window.onresize when changing angular controller更改角度控制器时删除 window.onresize
【发布时间】:2016-06-07 15:39:34
【问题描述】:

我有一个使用 ui-router 的单页应用程序,其中列表页面使用 listController,详细信息页面使用 detailController。
详细信息页面附有 window.onresize 事件,而列表页面没有。
问题是每当我从详细页面移动到列表页面时,onresize 事件仍然会监听并抛出关于调整大小目标元素不存在的错误。

当我改变页面时如何移除 window.onresize 事件监听器?

(function() {
    angular
        .module('app')
        .controller('listController', function() {
            // do things for list page
        })
        .controller('detailController', function() {
            window.onresize = function() {
                // do some resize function
            }
        })
})();

【问题讨论】:

  • 也许只是将window.onresize 设置为nulllistController 中的新/空函数?
  • 我想这是个坏主意,因为控制器会添加更多页面。我不想为所有控制器添加这样的冗余。
  • 那你可以在视图卸载上做,但是我没有及时想到,在下面的答案中,只需在同一个范围(控制器)上添加 Rob Glass 建议的功能,其中你设置了window.onresize

标签: javascript angularjs onresize


【解决方案1】:

一旦路由离开并且控制器实例被销毁,您可以重置 onresize 函数。

$scope.$on('$destroy', function() {
   window.onresize = null
}

【讨论】:

  • 当然!为什么我没有考虑使用“离开控制器时运行的功能”进行搜索?!够用了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多