Chuyển tới nội dung chính

View

View Components

View là container chứa các Page, nằm bên trong App, App có thể có 1 hoặc nhiều View, mặc định mỗi View sẽ kế thừa các routes từ App, tuy nhiên có thể tuỳ chỉnh với mỗi View cụ thể.

View Properties

PropTypeDefaultDescription
initbooleantrueTự động khởi tạo view instance
namestringView name. Giúp truy xuất view instance thông qua zmp.views.[name]
mainbooleanfalseĐặt view trở thành view chính
tabbooleanfalseSử dụng View dạng tab, là children của component TabView
tabActivebooleanundefinedXác định View tab đang active
initRouterOnTabShowbooleanfalseNếu bật khi sử dụng View tab, không khởi tạo router của view và tải trang đầu tiên cho đến khi View tab được active và hiển thị
routerbooleantrueSet false để vô hiệu hóa view router
urlstringView's url mặc định. Nếu không chỉ định, sẽ sử dụng document url
loadInitialPagebooleantrueKhi được bật và không có trang con nào bên trong View. Sẽ tải trang đầu tiên khớp với URL khởi tạo
stackPagesbooleanfalseNếu được bật thì tất cả các trang trước đó trong navigation sẽ không bị xóa khỏi DOM khi chuyển trang.
allowDuplicateUrlsbooleanfalseCó thể bật tham số này để cho phép tải các trang mới có cùng url với trang "đang hoạt động" trong view.
animatebooleantrueBật hiệu ứng chuyên trang
preloadPreviousPagebooleantrueBật/tắt tải trước các trang trước khi truy cập sâu navigation. Nếu sử dụng tính năng "swipe back page" cần bật preloadPreviousPage.
reloadPagesbooleanfalseView sẽ luôn tải lại trang hiện đang hoạt động mà không cần tải trang mới
restoreScrollTopOnBackbooleantruekhi được kích hoạt, sẽ cuộn lê đầu trang khi bạn quay lại trang này
iosPageLoadDelaynumber0Độ trễ (tính bằng ms) sau khi trang mới sẽ được tải và chèn vào DOM và trước khi nó được chuyển đổi. Có thể tăng lên một chút để cải thiện hiệu suất. Sẽ chỉ có hiệu lực với theme iOS
mdPageLoadDelaynumber0Độ trễ (tính bằng ms) sau khi trang mới sẽ được tải và chèn vào DOM và trước khi nó được chuyển đổi. Có thể tăng lên một chút để cải thiện hiệu suất. Sẽ chỉ có hiệu lực với theme MD
auroraPageLoadDelaynumber0Độ trễ (tính bằng ms) sau khi trang mới sẽ được tải và chèn vào DOM và trước khi nó được chuyển đổi. Có thể tăng lên một chút để cải thiện hiệu suất. Sẽ chỉ có hiệu lực với theme Aurora
routesBeforeEnterfunction(context) |arrayFunction (hoặc mảng các functions) sẽ được thực thi trước mỗi route được tải/truy cập. Để tiến hành tải route thì cần gọi resolve. Trường hợp array tất cả function trong mảng cần được resolved.Tương tự route beforeEnter nhưng sẽ hoạt động trên tất cả route
routesBeforeLeavefunction(context) |arrayFunction (hoặc mảng các functions) sẽ được thực thi trước mỗi route khi ngừng tải/thoát. Để tiến hành tải route thì cần gọi resolve. Trường hợp array tất cả function trong mảng cần được resolved.Tương tự route beforeLeave nhưng sẽ hoạt động trên tất cả route
Elements Removal
removeElementsbooleantrueTrong quá trình chuyển trang Router có thể xóa các Page và Navbar elements không sử dụng khỏi DOM.
removeElementsWithTimeoutbooleanfalseKhi bật router sẽ xóa elements sau timeout
removeElementsTimeoutnumber0Timeout để xóa elements (trường hợp removeElementsWithTimeout: true)
iOS Dynamic Navbar
iosDynamicNavbarbooleanfalseBật hiệu ứng dynamic navbar trên iOS theme
iosAnimateNavbarBackIconbooleantrueKhi bật back icon sẽ có animation giống với native. Chỉ sử dụng trên dynamic navbar với back-link icon mặc định phía bên trái set với "sliding".
Swipe back
iosSwipeBackbooleantrueBật/tắt khả năng vuốt về bên trái để trở về trang trước. Trên iOS theme
iosSwipeBackThresholdnumber0Giá trị tính theo px. Swipe back action sẽ bắt đàu nếu "touch distance" lớn hơn giá trị này. Trên iOS theme
iosSwipeBackActiveAreanumber30Giá trị tính bằng px. Chiều rộng của cạnh trái màn hình sẽ triggers swipe back action. Trên iOS theme
iosSwipeBackAnimateShadowbooleantrueBật/tắt box-shadow animation khi thao tác swipe back thưc thiện. Có thể tắt nó để cải thiện hiệu suất. Trên iOS theme
iosSwipeBackAnimateOpacitybooleantrueBật/tắt opacity animation khi thực hiện swipe back action. Có thể tắt nó để cải thiện hiệu suất. Trên iOS theme
mdSwipeBackbooleanfalseBật/tắt khả năng vuốt về bên trái để trở về trang trước. Trên MD theme
mdSwipeBackThresholdnumber0Giá trị tính theo px. Swipe back action sẽ bắt đàu nếu "touch distance" lớn hơn giá trị này. Trên MD theme
mdSwipeBackActiveAreanumber30Giá trị tính bằng px. Chiều rộng của cạnh trái màn hình sẽ triggers swipe back action. Trên MD theme
mdSwipeBackAnimateShadowbooleantrueBật/tắt box-shadow animation khi thao tác swipe back thưc thiện. Có thể tắt nó để cải thiện hiệu suất. Trên MD theme
mdSwipeBackAnimateOpacitybooleanfalseBật/tắt opacity animation khi thực hiện swipe back action. Có thể tắt nó để cải thiện hiệu suất. Trên MD theme
auroraSwipeBackbooleantrueBật/tắt khả năng vuốt về bên trái để trở về trang trước. Trên Aurora theme
auroraSwipeBackThresholdnumber0Giá trị tính theo px. Swipe back action sẽ bắt đàu nếu "touch distance" lớn hơn giá trị này. Trên Aurora theme
auroraSwipeBackActiveAreanumber30Giá trị tính bằng px. Chiều rộng của cạnh trái màn hình sẽ triggers swipe back action. Trên Aurora theme
auroraSwipeBackAnimateShadowbooleanfalseBật/tắt box-shadow animation khi thao tác swipe back thưc thiện. Có thể tắt nó để cải thiện hiệu suất. Trên Aurora theme
auroraSwipeBackAnimateOpacitybooleantrueBật/tắt opacity animation khi thực hiện swipe back action. Có thể tắt nó để cải thiện hiệu suất. Trên Aurora theme
Browser History
browserHistorybooleanfalseNgười dùng có thể chuyển trang thông qua lịch sử ứng dụng bằng cách sử dụng nút back/forward mặc định của trình duyệt.
browserHistoryAnimatebooleanfalseBật/tắt hiệu ứng chuyển trang khi lịch sử trình duyệt thay đổi
browserHistoryOnLoadbooleantrueTắt để bỏ qua phân tích cú pháp URL lịch sử trình duyệt và tải trang khi tải ứng dụng

Lưu ý tất cả các parameters có thể được khai báo trong app global trong view property để set mặc định cho tất cả views. Ví dụ:

const appParams = {
view: {
iosDynamicNavbar: false,
},
};

View Methods & Properties

const view = zmp.views[name];

Sau khi đã có view instance, view instance cung cấp các methods và properties:

| Properties | | ------------------------- | ------------------------------------------------ | | view.app | liên kết đến global app instance | | view.el | View HTML element | | view.$el | ZMP dom instance với view HTML element | | view.name | View name đã được khai báo | | view.main | có phải view chính hay không | | view.routes | Mảng chứa các routes | | view.history | Mảng chứa lịch sử của view | | view.params | Object chứa các parameters khởi tạo | | view.router | Router instance được khởi tạo trong view | | Methods | | view.destroy() | Hủy view instance | | view.on(event, handler) | Thêm event handler | | view.once(event, handler) | Thêm event handler và xóa đi sau khi fired | | view.off(event, handler) | Xóa event handler | | view.off(event) | Xóa tất cả event handler của event được chỉ định | | view.emit(event, ...args) | Fire event trên instance |

View Events

Swipe-back chỉ khả dụng trên iOS theme.

Thêm các event handler thông qua các property on${EventName}

EventPropDescription
viewInitonViewInitEvent sẽ được triggered khi khởi tạo view
viewResizeonViewResizeEvent sẽ được triggered khi thay đổi kích thước Master (khi masterDetailResizable enabled)
swipebackMoveonSwipebackMoveEvent sẽ được triggered trong quá trình swipe back di chuyển
swipeBackBeforeChangeonSwipeBackBeforeChangeEvent sẽ được triggered ngay trước swipe back animation tới trang trước khi người dùng thả ra
swipeBackAfterChangeonSwipeBackAfterChangeEvent sẽ được triggered ngay sau swipe back animation tới trang trước khi người dùng thả ra
swipeBackBeforeResetonSwipeBackBeforeResetEvent sẽ được triggered ngay trước swipe back animation tới trang hiện tại khi người dùng thả ra
swipeBackAfterResetonSwipeBackAfterResetEvent sẽ được triggered ngay sau swipe back animation tới trang hiện tại khi người dùng thả ra

Truy cập View Instance

Nếu khởi tạo tự động view instance (init= prop) Có thể truy cập instance thông qua:

  • Nếu truyền name property (ví dụ: "left") Có thể truy xuất thông qua zmp.views.left
  • main view (với main= prop) truy xuất thông qua zmp.views.main

Ví dụ

Layout tối giản nhất

<View main>...</View>;

{
/* Renders to: */
}

<div className="view view-main">...</div>;

Với parameters

<View
url="/"
main
animate={false}
iosDynamicNavbar={false}
browserHistory={true}
>
...
</View>