LVRS Storyboard Frame
backend/ViewStateTracker.svx
Path: backend/ViewStateTracker.svx
ViewStateTracker
위치: backend/navigation/viewstatetracker.h / backend/navigation/viewstatetracker.cpp
ViewStateTracker는 경로/뷰 스택 상태를 추적하고 활성/비활성/비활성화 파티션을 계산합니다.
목적
- 현재 페이지 스택을 상태 저장 레코드로 나타냅니다.
- 활성화된 최상위 활성 뷰 하나를 계산합니다.
- 기본 경로 메타데이터와 관계없이 명시적인 비활성화 재정의를 적용합니다.
상태
열거형 ViewState:
ActiveInactiveDisabled
API의 문자열 표현:
"Active""Inactive""Disabled"
속성
stack: listloadedViews: stringListactiveViews: stringListinactiveViews: stringListdisabledViews: stringListcurrentActiveView: stringloadedCount: int
방법
스택 동기화 및 재정의:
syncStack(entries)setViewDisabled(viewId, disabled)setViewEnabled(viewId, enabled)
조회/스냅샷:
isLoaded(viewId)stateOf(viewId)view(viewId)snapshot()clear()
항목 구문 분석 규칙
syncStack(entries)는 선택적 필드가 있는 항목 맵을 허용합니다.
viewIdpathenabled/disabled
viewId가 누락된 경우:
- 가능한 경우
path를 사용하세요. - 그렇지 않으면
_component_<index>를 생성합니다.
상태 해결 규칙
- 스택 테일에서 시작하여 처음으로 효과적으로 활성화된 항목은
Active가 됩니다. - 효과적으로 활성화된 다른 항목은
Inactive가 됩니다. - 비활성화된 항목은
Disabled가 됩니다.
사용예
import LVRS 1.0 as LV
Component.onCompleted: {
LV.ViewStateTracker.syncStack([
{ viewId: "overview", path: "/" },
{ viewId: "reports", path: "/reports", enabled: true }
])
}
확장된 예: 임시 비활성화 재정의
import LVRS 1.0 as LV
function suspendView(viewId) {
LV.ViewStateTracker.setViewDisabled(viewId, true)
}
function resumeView(viewId) {
LV.ViewStateTracker.setViewDisabled(viewId, false)
}
운영 참고 사항
- 비활성화 재정의는 경로 제공
enabled플래그와 별개입니다. currentActiveView는 항상 가장 효과적으로 활성화된 항목을 확인합니다.clear()는 스택 레코드를 모두 재설정하고 재정의를 비활성화합니다.
FAQ
Q. 하나의 보기에만 활성으로 표시된 이유는 무엇입니까? A. 추적기는 활성 상태를 현재 스택에서 가장 효과적으로 활성화된 보기로 정의합니다.