AngularJS UI 라우터가 지정되지 않은 종속성을 순서대로 실행하지 않음

getn_outchea

나는 현재 UI 라우터가 해결을로드하는 순서를 처리하는 방법에 문제가 있습니다. 내가 달성하려는 최종 목표는 데이터를로드하고 저장하고 해당 데이터를 한 번만로드 (요청) 한 다음 서비스를 통해 액세스 할 수있는 서비스를 갖는 것입니다.

현재 구현 방법은 다음 패턴을 따릅니다.

더 높은 수준의 상태 확인에서 서비스에 데이터를로드하도록 지시합니다. 해결 결과는 컨트롤러에 서비스를 삽입하여 데이터에 액세스하기 때문에 하위 서비스의 종속성이 아닙니다. 하위 상태 확인은 이전 상태에서 "프라이밍"된 서비스에 따라 달라질 수 있습니다. 이것은 일반적으로 응용 프로그램을 클릭 할 때 훌륭하게 작동하지만 (즉, 상태 a-> 상태 ab-> 상태 abc) 중첩 상태 (상태 ab 또는 상태 abc)로 직접 이동합니다. 자식 상태가 부모 상태의 해결을 종속성으로 지정하지 않으면 UI 라우터가 순서 해결이 실행되도록 보장하지 않기 때문에 문제가 발생합니다. 아래 예를 참조하십시오.

app.config(function($stateProvider) {

  $stateProvider
  .state('a', {
    url: "/a",
    resolve: {
      data: function(service) {
        return service.getData(); // makes network request
      }
    }
  })
  .state('a.b', {
    url :"/b",
    resolve: {
      specificData: function(service) { // if you add data as a dependency here, it works fine
        return service.useDataToGetSpecificData(); // doesn't make network request
      }
    }
  })

});

예제에서 사용자가 ab 상태로 직접 이동하면 specificData 확인이 실패합니다. service.useDataToGetSpecificData는 네트워크 요청을하지 않고 현재 서비스에 저장된 데이터에 액세스합니다. 이 호출은 네트워크 요청이기 때문에 상태 a의 확인이 아직 완료되지 않았기 때문에 실패합니다.

해결책은 서비스가 아직 데이터가없는 경우를 처리하고 데이터가있을 때까지 대기하여 관리하도록하는 것입니다. 그러나 서비스가 수행 할 작업에 대해 약간 과장된 느낌이 들고 UI 라우터.

또 다른 해결책 (현재 제가 진행하고있는 것)은 사용되지 않더라도 상태 ab에서 해결의 종속성으로 "데이터"를 추가하는 것입니다. 이로 인해 ab는 a가 결심을 완료 할 때까지 기다려야하며 모든 것이 잘 작동합니다. 그러나 이것은 해킹처럼 느껴지고 매우 직관적이지 않습니다. 이 코드를 모르는 사람은이 사용하지 않는 변수가 ab의 해결에서 선언 된 이유에 대해 머리를 긁적입니다.

종속성을 지정하지 않고 보장되지 않는 해결 순서는 UI 라우터가 동작하도록 작성된 방식이므로 이상하거나 잘못된 작업을해야한다고 생각합니다.

시릴 채폰

또 다른 해결책 (현재 제가 진행하고있는 것)은 사용되지 않더라도 상태 ab에서 해결의 종속성으로 "데이터"를 추가하는 것입니다. 이로 인해 ab는 a가 결심을 완료 할 때까지 기다려야하며 모든 것이 잘 작동합니다. 그러나 이것은 해킹처럼 느껴지고 매우 직관적이지 않습니다.

작업을 수행 하는 일반적인 방법입니다. 일반적으로 하나의 경로에 여러 개의 순차적 해결을 추가하기 위해이 작업을 수행합니다. 예를 들어, 나는 종종 추가 attachUser, HTTP GET 요청의 약속을 돌려 후크를 다음 다른 isLoggedIn이 그 attachUser을 종속성으로. 나는 많이 검색했지만 더 나은 것을 찾지 못했습니다. angular의 인젝터를 넘어서는 ui-router에서이 경우에 특별히 쓰여진 것은 없습니다. 귀하의 사례가 상속으로 인해 특별하더라도 여기여기정확히 동일한 문제 입니다.

그래서 뭔가 이상하거나 잘못한 것 같아요.

넌 아니야. 이상하거나 잘못되었다고 생각할 가능성이 큽니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

각도 유성 UI 라우터가로드되지 않음

분류에서Dev

AngularJS 1.3.13-UI 라우터 구성으로 전달 된 서비스 공급자가 해결되지 않음

분류에서Dev

AngularJS 약속이 순서대로 실행되지 않습니다.

분류에서Dev

UI 라우터 상태가로드되지 않음

분류에서Dev

종속성으로 추가 된 경우 Gradle 작업이 실행되지 않음

분류에서Dev

angularjs-ui-router가 제대로 표시되지 않음 ($ stateProvider)

분류에서Dev

UI 라우터가 라우팅되지 않음

분류에서Dev

뷰 섹션이있을 때 UI 라우터가 컨트롤러를 실행하지 않음

분류에서Dev

TypeError : 온천 UI, angularjs에서 정의되지 않은 'setMainPage'속성을 읽을 수 없습니다.

분류에서Dev

JUnit 테스트가 순서대로 실행되지 않음

분류에서Dev

JS 동기가 순서대로 실행되지 않음

분류에서Dev

2 단계가 순서대로 실행되지 않음

분류에서Dev

2 단계가 순서대로 실행되지 않음

분류에서Dev

2 단계가 순서대로 실행되지 않음

분류에서Dev

jQuery가 순서대로 실행되지 않음

분류에서Dev

AngularJS에서 호출 할 때 Angular 라우터가 브라우저 URL을 업데이트하지 않음

분류에서Dev

AngularJS UI 라우터가 작동하지 않습니다.

분류에서Dev

UI 라우터 기본 자식보기가 활성화되지 않음

분류에서Dev

Composer VCS 저장소가 종속성을로드하지 않음

분류에서Dev

SignalR을 사용하여 "정의되지 않은"클라이언트 "속성을 읽을 수 없음"angularJS

분류에서Dev

Angularjs ui.router chid 상태가로드되지 않음

분류에서Dev

라우터로 보내는 상태가 정의되지 않음

분류에서Dev

jQuery와 jQuery UI 간의 종속성을 정의해도 jQuery 자체 이전에 UI로드가 방지되지 않습니다.

분류에서Dev

충족되지 않은 종속성을 수정할 수 없음

분류에서Dev

CSS 속성이 순서대로로드되지 않음

분류에서Dev

포착되지 않은 TypeError : angularjs에서 정의되지 않은 'indexOf'속성을 읽을 수 없습니다.

분류에서Dev

포착되지 않은 TypeError : angularjs에서 정의되지 않은 'indexOf'속성을 읽을 수 없습니다.

분류에서Dev

AngularJS 라우팅 뷰가로드되지 않음

분류에서Dev

Yeoman 사용자 지정 생성기가 package.json에서 종속성을로드하지 않음

Related 관련 기사

  1. 1

    각도 유성 UI 라우터가로드되지 않음

  2. 2

    AngularJS 1.3.13-UI 라우터 구성으로 전달 된 서비스 공급자가 해결되지 않음

  3. 3

    AngularJS 약속이 순서대로 실행되지 않습니다.

  4. 4

    UI 라우터 상태가로드되지 않음

  5. 5

    종속성으로 추가 된 경우 Gradle 작업이 실행되지 않음

  6. 6

    angularjs-ui-router가 제대로 표시되지 않음 ($ stateProvider)

  7. 7

    UI 라우터가 라우팅되지 않음

  8. 8

    뷰 섹션이있을 때 UI 라우터가 컨트롤러를 실행하지 않음

  9. 9

    TypeError : 온천 UI, angularjs에서 정의되지 않은 'setMainPage'속성을 읽을 수 없습니다.

  10. 10

    JUnit 테스트가 순서대로 실행되지 않음

  11. 11

    JS 동기가 순서대로 실행되지 않음

  12. 12

    2 단계가 순서대로 실행되지 않음

  13. 13

    2 단계가 순서대로 실행되지 않음

  14. 14

    2 단계가 순서대로 실행되지 않음

  15. 15

    jQuery가 순서대로 실행되지 않음

  16. 16

    AngularJS에서 호출 할 때 Angular 라우터가 브라우저 URL을 업데이트하지 않음

  17. 17

    AngularJS UI 라우터가 작동하지 않습니다.

  18. 18

    UI 라우터 기본 자식보기가 활성화되지 않음

  19. 19

    Composer VCS 저장소가 종속성을로드하지 않음

  20. 20

    SignalR을 사용하여 "정의되지 않은"클라이언트 "속성을 읽을 수 없음"angularJS

  21. 21

    Angularjs ui.router chid 상태가로드되지 않음

  22. 22

    라우터로 보내는 상태가 정의되지 않음

  23. 23

    jQuery와 jQuery UI 간의 종속성을 정의해도 jQuery 자체 이전에 UI로드가 방지되지 않습니다.

  24. 24

    충족되지 않은 종속성을 수정할 수 없음

  25. 25

    CSS 속성이 순서대로로드되지 않음

  26. 26

    포착되지 않은 TypeError : angularjs에서 정의되지 않은 'indexOf'속성을 읽을 수 없습니다.

  27. 27

    포착되지 않은 TypeError : angularjs에서 정의되지 않은 'indexOf'속성을 읽을 수 없습니다.

  28. 28

    AngularJS 라우팅 뷰가로드되지 않음

  29. 29

    Yeoman 사용자 지정 생성기가 package.json에서 종속성을로드하지 않음

뜨겁다태그

보관