0

AngularJS에서 특정 동작을 만들고 싶습니다. 설명하겠습니다.AngularJS의 약속 및 잘못된 리디렉션 동작

페이지 A 또는 페이지 B로 리디렉션되는 약속 체인이 있습니다.

이 약속 체인이 호출 될 때 (아직 해결되지 않은 경우) 다른 템플릿 (일종의 "기다려주십시오"페이지)이 표시되기를 바랍니다.

이 다른 방법을 말하려면 예상 워크 플로우는 다음과 같습니다

  • 사용자가 페이지에서 버튼을 클릭, 약속은 약속 해상도의 시간 동안
  • 라고, 사용자는 대기를 본다 페이지. 약속 (실제로 약속의 체인이) 해결되면
  • 는, 사용자가 약속 해상도의 시간 동안,

현재 페이지 A 또는 페이지 B.에 리디렉션 페이지가 정상이다, 동일하게 유지 하지만 나는 이것을 원하지 않는다.

면책 조항 : 저는 Javascript 개념의 초보자이므로 사용하지 말아야 할 것들을 사용합니다. 도움을

감사합니다.

답변

0

HTML처럼 뭔가를 할 수

<div ng-show="isLoading" class="loading">Please wait ...</div> 

<div ng-show="isLoading == true"> 
Normal content of your page ... 

<a ng-click="doSomePromiseChain()">click me</a> 
</div> 

다음 각 컨트롤러

$scope.isLoading = false; 
$scope.doSomePromiseChain = function() { 
$scope.isLoading = true; 
//call your promise chain 
} 
사용자가 버튼을 클릭 따라서

, 각 세트 true로 isLoading, 그리고 쇼 "Please wait ..."메시지가 표시됩니다. 약속이 해결되면 계속 A 또는 B로 리디렉션합니다.

+0

이것은 기본 구조이지만 일반적으로 뮤텍스가 아닌 세마포어가 필요합니다. 당신은 isLoading을위한 카운터를 갖고 싶습니다. 그리고 여러개의 아이템이로드되면 이상한 플래쉬와 이상한 행동을하지 않도록 디스플레이하기 전에 0인지 확인하십시오. –

+0

이 솔루션을 이용해 주셔서 감사합니다! 유일한 문제는 "뒤로"를 클릭하면 isLoading이 여전히 참 (컨트롤러가 호출되지 않음을 의미)입니다. –

+0

브라우저에서 "뒤로"를 의미합니까? 또는 앱에 맞춤 '뒤로'버튼이 내장되어 있습니까? –