programing

$rootScope를 사용하지 않고 angular ui 라우터를 사용하여 stateChange 방지

lastmemo 2023. 3. 7. 21:02
반응형

$rootScope를 사용하지 않고 angular ui 라우터를 사용하여 stateChange 방지

사용자가 상태를 종료할 수 있지만 모달 대화 상자를 표시하기 전에 "저장하시겠습니까?"

사용자 데이터가 더러운 경우에만 변경되었음을 의미합니다.

원하지 않는 것은 EditController의 isDirty 속성을 $rootScope에 고정하고 stateChangeStart 이벤트로 이동하여 isDirty를 확인하고 저장 대화상자를 표시하거나 표시하지 않는 것입니다.

글로벌 변수 방지: 모든 Javascript 초보자 책...

1) 그러면 $rootscope를 해킹하지 않고 상태 변경을 방지하는 방법은 무엇입니까?

2) UI 로직을 캡슐화하기 위해 컨트롤러 내부에 기능 후크를 제공하는 UI 라우터를 강화한 UI 라우터용 도우미 라이브러리가 있습니까?

(1) 상태 변경 이벤트의 문서따라

 $rootScope.$on('$stateChangeStart', 
      function(event, toState, toParams, fromState, fromParams){ 
          event.preventDefault(); 
          // transitionTo() promise will be rejected with 
          // a 'transition prevented' error
 })

필요에 따라 $rootScope를 $scope로 변경할 수 있습니다.

상태 개체에 사용자 지정 데이터 연결에서 사용자 지정 데이터를 전달할 수 있습니다.

(2) 무엇을 원하는지 잘 모르겠지만 공장/서비스/공급자는 정말 도움이 될 것입니다.

$transitions.onStart(angular-ui-router 1.0.0-rc)를 사용하면 부울을 반환할 수 있습니다.한다면false이행이 취소됩니다.

$transitions.onStart({}, function (trans) { 
    var answer = confirm("Want to leave this page?")
    if (!answer) {
        return false;
    }
});

다음은 매뉴얼입니다.https://ui-router.github.io/ng1/docs/latest/modules/transition.html#hookresult

쓸 때는 안정된 릴리스의 일부가 아니지만 UI 라우터의 1.0 릴리스에서는 반환값 onEnter/onExit을 사용하여 네비게이션을 방지합니다.

GitHub 2219호 참조

언급URL : https://stackoverflow.com/questions/27787380/prevent-a-statechange-with-angular-ui-router-without-using-rootscope

반응형