Angular UI 라우터가있는 다른 파일에서 Onenter 및 Onexit 콜백을 정의하십시오.
-
27-12-2019 - |
문제
일부 주에서 각도 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;
});
.
그러나이보다는이 공유 기능을 서비스로 추출하는 것이 좋습니다.이것을하기가 어렵다면 모듈 사이에 너무 많은 커플 링이있는 것처럼 보이기 때문에 코드를 깊이 살펴볼 것입니다.
제휴하지 않습니다 StackOverflow