2015-01-08 2 views
3

페이지에 배열 된 항목이있는 프로젝트에서 작업하고 있습니다. 이 페이지의 각 항목을 클릭하면 별도의 컨트롤러 및 다른보기로 연결되는 단추가있는 모달이 열립니다.Angularjs, IonicFramework - 모달로 되돌아 가기위한 옵션

사용자가로드 된 페이지에서 뒤로 버튼을 누르면 사용자가 배열 페이지로 이동합니다. 그래서 사용자가 클릭 할 때, 원래의 모달 오버레이 모달로로드 된 페이지를 선회

  1. : 나는 모달보기로 이어질하기 위해 뒤로 버튼의 누름을 요구하고, 나는 몇 가지 옵션을 갔다 버튼을 누르면 원래의 모달을 그대로 둔 채 열립니다.

  2. $ state.go()를 사용하기 위해 상태를 변경하기 위해 뒤로 버튼을 반복합니다. 이것은 각 컨트롤러에 있어야합니다.

  3. $ rootScope.viewHistory로 변조하면 가장 해킹 된 옵션입니다. 그러면 이전 상태를 읽고 직접 편집하여 뒤로 버튼이 다른 곳으로 이동하게합니다.

  4. state와 stateParameters의 두 매개 변수를 전달할 수있는 $ rootScope에 뒤로 버튼 기능이 있습니다. 이것은 아무것도 전달되었는지 확인하고 이에 따라 상태를 변경합니다. 아무 것도 전달되지 않으면 일반 뒤로 버튼 기능을 사용합니다.

장단점

(1) 모달로이 페이지를 선회의 주된 문제는 페이지를 복제 필요로한다는 것입니다, 이것은 그렇게 두 개의 컨트롤러 내에서 할 필요에 기인한다 우리는 아이템 목록 페이지에서 데이터를 잃지 않을 것이며 자체 컨트롤러 내에서 메뉴를 통해 액세스 할 수 있어야합니다. 이것이 유용 할 수있는 이유는 다른 페이지가 이런 식으로 작업해야한다는 사실입니다.

(2) 뒤로 버튼을 적용 할 때의 주요 문제점은 뒤로 버튼이 현재 다른 모든 상태에 대한 추상 부모 상태 인 메뉴의 한 페이지에만 위치한다는 것입니다. 이는 페이지 단위로 기능을 변경하기 위해 각 페이지 위로 뒤로 버튼을 가져와야 함을 의미 할 수 있습니다. 이것은 또한 함수 내에서 슬라이딩 방향을 호출하는 방법을 알지 못하기 때문에 상태를 변경할 때 페이지가 어떻게 움직이는 지 엉망으로 만들 수 있습니다.

(3)이 합리적으로 쉽게 보일 수있을 것입니다하지만이 작업을하고 정말 해키 느낌 만약 내가 단서가 없다

(4) 우리는 우리가 필요 뒤로 버튼 달러 (A $)의 rootScope 기능을 가지고 있다면 먼저 이것을 호출했는지, 지금 시점에서 하나의 컨트롤러가 다른 컨트롤러보다 먼저 호출되었지만 푸시 알림을 통합하면이 컨트롤러가 모두 변경 될 수 있습니다.

무엇이 최선의 해결책으로 간주 될까요? $ rootScope 기반의 뒤로 버튼을로드하는 마스터 컨트롤러에서 재 작업해야합니까 (가능합니까?)? 원래 컨트롤러에 데이터를 유지하면서 다른 컨트롤러에서 모달을로드하는 방법이 있습니까? 최선의 선택은 무엇입니까?

답변

2

첫째로, 이것은 깔끔한 디자인 패턴입니다. 모달을 트리거하는 경우 이후의 모든 UI 전환은 사용자를 혼동하지 않도록 모달로 제한되어야합니다. 모달은 탐색 요소 라기보다는 행동에 잠깐 들어가는 것으로 생각하십시오. 각 배열 요소에 대해 여러 페이지의 상호 작용 페이지가 필요한 경우 모든 요소를 ​​모달 내부에 작성하십시오. 사용자 지정 지시문에서이 문제를 해결할 수 있어야합니다.

앱의 다른 곳으로 이동하는 데 중간 단계로 사용해야하는 경우 로컬 저장 공간, 세션 저장 공간, 쿠키 등을 통해 모달을 트리거하는 데 필요한 매개 변수를 캐싱하는 것이 좋습니다. 사용자가 처음으로 모달을 트리거하면 매개 변수를 저장하십시오. 상위 컨트롤러로 이동하면 매개 변수가 있는지 확인하고 매개 변수가 있으면 프로그래밍 방식으로 모달을 트리거합니다. 모달이 닫히거나 사용자가 상위 페이지에서 다시 탐색하는 즉시 저장소에서 매개 변수를 지우는 것을 잊지 마십시오.

관련 문제