programing

이온 이력은 어떻게 동작하며 비루트 스택은 언제 작성됩니까?

oldcodes 2023. 3. 10. 22:44
반응형

이온 이력은 어떻게 동작하며 비루트 스택은 언제 작성됩니까?

ionic v1.0.0을 사용하고 있으며, 이력에 의해 관리되는 병렬 이력을 이해할 수 없습니다.$ionicHistory

구 하드웨어-)버튼을 가 있어 알고 by android Android by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by es by es es es es es es es es es es es es es es es by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by by$ionicGoBack()

UI 라우터의 네비게이션 중 일부는 새로운 이력 스택을 생성하고 다른 일부는 루트 이력에 이력 항목을 추가하는 것처럼 보입니다.상태에서 서브스테이트로 이동하는 경우에도 IMO가 기록된 이력에 추가해야 합니다.

문의사항

  • 분 요?ui-sref ★★★★★★★★★★★★★★★★★」$state.go(...)이력 항목을 새로 생성된 스택에 추가하시겠습니까?
  • 제가추?에요?root
  • 모달은 특별한 방법으로 취급됩니까?

좀 더 구체적으로 설명하지 못해서 죄송하지만, 앱이 좀 복잡해서 한 번에 문제를 분리하는 방법을 잘 모르겠습니다.좋은 문서를 놓쳤나 봐요

당신이 질문하는 모든 정보를 찾을 수 없더라도 이 질문에 답하도록 노력하겠습니다.

저를 포함한 많은 사람들이 내비게이션 시스템과 역사가 어떻게 작동하는지 이해하는데 어려움을 겪고 있는 것 같습니다.

저는 왜 일이 예상대로 되지 않는지 설명하려고 아까 질문에 대답했습니다.네비게이션은 사용자가 컬렉션을 사용하여 방문한 각 보기를 추적하는 것 같습니다.사실, 2개의 컬렉션이 있습니다.$ionicHistoryone . 첫 번째 첫첫 first거 거거 first first거거$ionicHistory.viewHistory().views는 현재 의 각 것 만, 다른 는 「접근」입니다.$ionicHistory.viewHistory().histories이치

탭, 사이드메너스 또는 일반 보기에 대해 다른 유형의 기록이 있을 수 있습니다.

코드펜에서 독립 이력이 어떻게 병렬로 작동하는지 볼 수 있습니다.
2번하나는 홈 탭용이고 다른 하나는 정보 탭용입니다.

각 탭의 하위 항목을 탐색하고 이전 탭으로 돌아가면 내비게이션 시스템이 이전 상태를 기억하고 있음을 알 수 있습니다.

페이지에 상세하게 표시되어 있는 네비게이션의 동작을 확인할 수 있는 다른 플런커를 준비했습니다.

★★★★★★★$ionicHistory.viewHistory().views는 사용자가 새 페이지를 방문할 때마다 업데이트됩니다(컬렉션의 현재 뷰는 각 괄호로 둘러싸여 있습니다).

보기가 컬렉션에 추가된 경우 다시 추가되지 않습니다.

할 수 (이력을 클리어 하는 동작).$ionicHistory.clearHistory()또는 현재 이력의 루트를 설정합니다.

$ionicHistory.nextViewOptions({
    historyRoot: true
});

내 plunker의 Invoice 페이지에는 녹색 버튼(Other Root View)이 있습니다.누르면 새 이력 루트를 설정하고 상태를 변경합니다.

$ionicHistory.nextViewOptions({
    historyRoot: true
});
$state.go('otherviewroot');

예상대로 동작합니다.사실 백뷰는 없고 스택에는 현재 뷰만 포함되어 있습니다.

시퀀스를 시도하면 모든 것이 엉망이 됩니다.

Home - Contacts - Invoices - Home (button in the header).

이제 Ionic이 시퀀스를 제어할 수 없게 되어 컬렉션에 뷰를 계속 추가하는 것 같습니다.

홈 버튼을 누르면 현재 이력의 루트에 있기 때문에 뒤로 버튼이 클리어 됩니다만, 이 기능은 실행되지 않습니다.

같은 패턴을 반복해서 사용하면 컬렉션의 크기가 무제한으로 증가합니다.

나는 이것이 올바른 행동이 아니고 수정이 필요하다고 생각한다.

다시 질문으로 돌아가겠습니다.

Android의 뒤로 버튼은 같은 패턴을 따릅니다.

모달은 다행히 일반 뷰로 취급되지 않으며 컬렉션에 영향을 주지 않습니다.

이전 투고에 대한 추가 정보입니다.

이력 스택은 항상 "ion-nav-view" 템플릿에 링크됩니다.루트 이력 스택은 첫 번째 "ion-nav-view" 항목에 대해 생성됩니다.

합니다. 른 、 른 、 - 、 - 、 ion - nav - view 。<ion-nav-view name="default"></ion-nav-view><ion-nav-view></ion-nav-view>

CodePen에서는 탭 페이지와 다른 페이지('탭', '기타', 'other1'이라는 이름)를 위한 RootStack이 있으며 탭 페이지 내에는 각 탭에 대한 하위 팩이 하나씩 있습니다.탭 페이지 및 기타 페이지는 루트 ion-nav 뷰 내에서 실행됩니다.테스트 중에 루트 이온 내브 뷰에 이름을 할당하고 컨트롤러에서 이 뷰 이름을 참조해야 했습니다.그렇지 않으면 메인 페이지(기타 = > 탭 = > 기타 = > ..)를 전환할 때 스택이 항상 다시 작성되었습니다.

루트 스택용 HTML:

<ion-nav-view name="default"></ion-nav-view>

컨트롤러:

 .state('other', {
      url: "/other",
      views: {
        'default': {
          templateUrl:       "templates/other.html",
        }
        },
.state('tabs', {
      url: "/tab",
      abstract: true,
     views: {
        'default': {
          templateUrl:       "templates/tabs.html",
        }
     }
    })

탭 템플릿 내에서 다양한 탭스택에 새로운 ion-nav-view를 할당했습니다(기본 ionic 탭템플릿에서 실행).

예를 들어 홈 탭(및 홈 스택)의 경우 HTML은 다음과 같습니다(홈 페이지, 팩트).

<ion-nav-view name="home-tab"></ion-nav-view>

컨트롤러:

.state('tabs.home', {
      url: "/home",
      views: {
        'home-tab': {
          templateUrl: "templates/home.html",
        },

      }
    })
    .state('tabs.facts', {
      url: "/facts",
      views: {
        'home-tab': {
          templateUrl: "templates/facts.html",
        },          
      }
    })

위 codepen의 버그 리포트도 제출했습니다.그것은 역사를 거꾸로 잘못 바꾸고 있다.https://github.com/driftyco/ionic/issues/4086

하지만 나는 내가 고칠 자신이 없다.이력 기능을 보다 글로벌하게 재설계하여 문제를 해결할 필요가 있을지도 모릅니다.

언급URL : https://stackoverflow.com/questions/31186043/how-does-ionic-history-work-and-when-is-a-non-root-stack-created

반응형