UI-Router의 Resolve 함수는 한 번만 호출됩니다.
ui-routers resolve 기능을 사용하여 컨트롤러에 쉽게 해결할 수 있는 약속을 주입하려고 했습니다.
예제 plnkr을 사용하여 예제를 만들었습니다.다음과 같은 중첩 상태를 고려합니다.route1
그리고.route1.list
. 나는 다음과 같은 해결 기능이 있습니다.abc
에 규정된route1
. 이제 다음으로 이동할 때route1
처음으로.abc
가 호출되며 해결됩니다.이제 다음으로 이동할 때route1.list
그리고 다시route1
,abc
다시 호출되지 않습니다.
http://plnkr.co/edit/mi5H5HKVAO3J6PCfKSW3?p=preview
이것은 의도적인 것이라고 생각하지만, 이 사용 사례를 고려해 보십시오. 해결 기능은 http를 통해 일부 데이터를 검색하며, 어떤 시점, 아마도 모든 상태 변경 시 새로 고침/무효화되어야 합니다.중첩 상태를 사용할 때 이를 수행할 수 있는 방법이 있습니까?모든 주입에 해결 기능이 호출되면 이전의 해결된 약속을 반환하거나 새 약속을 만드는 등 원하는 방식으로 실행할 수 있습니다.
저는 이것을 간단히 테스트했을 뿐이지만, 만약 주들이 중첩되지 않았다면 제가 기대했던 대로 작동할 것입니다.하지만 이것 때문에 둥지를 튼 상태를 포기하는 것은 악취가 납니다.중첩 상태에서 의존성 해결을 사용할 수 있는 것은 사실 좋은 일입니다.
옵션제공reload:true
로.go()
/transtionTo()
/ui-sref
효과가 있습니다 :-) 덕분입니다.Designing the Code
나를 이 방향으로 인도해 준 것에 대해.해결책이 좀 달라서 이렇게 답을 씁니다.
다시 로드는 다음과 같이 문서화됩니다.
reload(v0.2.5) - {boolean=false}, true이면 상태나 매개 변수가 변경되지 않았더라도 강제로 전환됩니다(즉, 동일한 상태의 reload).검색 매개 변수를 포함하여 모든 것이 동일한 경우 다시 로드를 강제로 수행할 때 사용하기 때문에 reloadOnSearch와는 다릅니다.
직접적인 방법은 모든 것을 바꾸는 것입니다.ui-sref
다음과 같이 연결합니다.<a ui-sref="route1" ui-sref-opts="{reload: true}">
.
모든 링크에서 옵션을 제공하지 않기 위해 장식가를 썼습니다.$state
(http://plnkr.co/edit/mi5H5HKVAO3J6PCfKSW3?p=preview) 참조:
myapp.config(function($provide) {
$provide.decorator('$state', function($delegate) {
var originalTransitionTo = $delegate.transitionTo;
$delegate.transitionTo = function(to, toParams, options) {
return originalTransitionTo(to, toParams, angular.extend({
reload: true
}, options));
};
return $delegate;
});
});
해라$state.reload();
다시 해결해야 합니다.컨트롤러가 다시 로드되지 않는 문제가 있다고 생각합니다.(ui.n00b를 여기서도 router)
언급URL : https://stackoverflow.com/questions/22730868/ui-routers-resolve-functions-are-only-called-once
'programing' 카테고리의 다른 글
Android/ARM 대상의 델파이 XEX 코드 생성에 어떤 영향을 미칠까요? (0) | 2023.10.12 |
---|---|
'*(*(&array + 1)) - 1)'은 자동 배열의 마지막 요소를 얻기 위해 사용해도 안전합니까? (0) | 2023.10.12 |
preg_match를 사용하여 youtube video id 구문 분석 (0) | 2023.10.12 |
Incorrect key file for table '/tmp/#sql_3c51_0.MYI'; try to repair it (0) | 2023.10.07 |
mysql 디렉토리 오류 초기화 중 (0) | 2023.10.07 |