我有一个使用Angular UI Router并带有某些状态的简单应用程序。
实际上,我的路由器中有这种代码:
$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
}
});
Controller 是在另一个文件中定义的,我正在寻找一种在同一文件中定义onEnter和onExit回调的好方法。
您认为最好的解决方案是什么?全局变量应该起作用,但是它不是很漂亮。
最佳答案
您可以执行此操作,但是却又不知道这是代码的味道。您正在混合 Controller 和状态之间的逻辑,但是它们应该是分开的。
无论如何,这是您可以执行的操作:
在您的 Controller 中,注入(inject)$state
对象并使用$state.get
方法:
.controller('layersCtrl', function($state) {
$state.get('map.layers').onEnter = blah;
$state.get('map.layers').onExit = blahblah;
});
但是,除此以外,我建议您将此共享功能提取到服务中。如果您发现很难做到这一点,那么我将深入研究您的代码,因为模块之间似乎耦合过多。
关于angularjs - 使用Angular UI Router在另一个文件中定义onEnter和onExit回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20052982/