微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

angularjs – 使用Angular UI路由器在另一个文件中定义onEnter和onExit回调

我有一个简单的应用程序使用Angular UI路由器与一些状态.

其实我的路由器中有这种代码

$stateProvider.state('map.layers',{
    url: '/layers',templateUrl: 'views/layers.html',controller: 'LayersCtrl',onEnter: function(map: Master.Map) {
      // do stuff
    },onExit: function(map: Master.Map) {
      // do stuff
    }
  });

控制器在另一个文件中定义,我正在寻找一种在同一文件中定义onEnter和onExit回调的好方法.

在您看来,什么是最佳解决方案?一个全局变量应该可以工作,但它不是很漂亮.

解决方法

你可以这样做,但它不知道更多这是代码味道.您在控制器和状态之间混合逻辑,但它们应该是分开的.

无论如何,这是你如何做到这一点:

在你的控制器中,注入$state对象并使用$state.get方法

.controller('layersCtrl',function($state) {
  $state.get('map.layers').onEnter = blah;
  $state.get('map.layers').onExit = blahblah;
});

但不是这样,我建议您将此共享功能提取到服务中.如果你发现很难做到这一点,那么我会深入研究你的代码,因为模块之间似乎有太多的耦合.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐