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

List

Cú pháp

<zmp-list>, <zmp-list-item>

List giúp hiển thị dạng danh sách các zmp-list-item, hay các Input với vai trò như một form

Properties

List Properties

PropTypeDefaultDescription
media-listbooleanfalseKích hoạt dạng Media List
links-listbooleanfalseKích hoạt dạng Links List
simple-listbooleanfalseKích hoạt dạng Simple List
sortablebooleanfalseKích hoạt dạng Sortable List
sortable-oppositebooleanfalseRenders sortable handler ở vị trí đối diện với vị trí mặc định
sortable-tap-holdbooleanfalseCho phép sắp xếp item trong Sortable List bằng cách nhấn giữ và kéo thả. Cần đặt touch.tapHold: true khi khởi tạo app
sortable-enabledbooleanfalseCho phép sắp xếp trên Sortable List
sortable-move-elementsbooleanGhi đè lại sortable.moveElements global app parameter. Khi moveElements được kích hoạt sẽ sắp xếp lại HTML elemnt theo danh sách đã sắp xếp. Có thể vô hiệu hóa moveElements khi sử dụng các thư viện khác để thao tác DOM
formbooleanfalseRender list với <form> tag thay vì <div>. Sử dụng khi muốn tạo form.
inline-labelsbooleanfalseRender label dưới dạng inline-style cho Form Inputs
no-chevronbooleanfalseXóa bỏ "chevron" icon trên các item của Links List
chevron-centerbooleanfalseCăn giữa (theo chiều dọc) "chevron" icon trên các item thuộc media list
no-hairlinesbooleanfalseXóa đường viền bao quanh List
no-hairlines-mdbooleanfalseXóa đường viền quanh List đối với MD theme
no-hairlines-iosbooleanfalseXóa đường viền quanh List đối với IOS theme
no-hairlines-aurorabooleanfalseXóa đường viền quanh List đối với Aurora theme
no-hairlines-betweenbooleanfalseXóa các đường viền giữa các items
no-hairlines-between-mdbooleanfalseXóa các đường viền giữa các items đối với MD theme
no-hairlines-between-iosbooleanfalseXóa các đường viền giữa các items đối với iOS theme
no-hairlines-between-aurorabooleanfalseXóa các đường viền giữa các items đối với Aurora theme
tabbooleanfalseThêm class "tab" khi sử dụng như một tab
tab-activebooleanfalseThêm class "tab-active" khi sử dung như một tab và làm tab này được kích hoạt
virtual-listbooleanfalseKích hoạt chế độ Virtual List
virtual-list-paramsobjectObject chứa các Virtual List Parameters
loadingbooleanfalseBật chế độ loading list
skeleton-effectstringTên hiệu ứng loading: 'fade', 'pulse' hoặc 'wave'

List Item Properties

PropTypeDefaultDescription
titlestringList item title
subtitlestringList item subtitle (Chỉ dùng được khi mediaItem = true)
textstringList item text (Chỉ dùng được khi mediaItem = true)
descriptionstringMô tả cho list item
mediastringDanh sách url hình ảnh cho media list item
afterstringThêm chỉ dẫn cho list item
badgestring | numberList item Badge
badge-colorstringTùy chỉnh màu sắc cho Badge. Một trong các màu sắc mặc định
media-itembooleanList item dạng media list item
dividerbooleanChuyển item thành divider phân cách giữa các list item
group-titlebooleanChuyển item thành tiêu đề nhóm list item
no-chevronbooleanfalseXóa icon mũi tên trên item dạng link
chevron-centerbooleanfalseCăn giữa icon mũi tên theo chiều cao của list item
tooltipstringNội dung của tooltip hiện lên khi click/hover item
tooltip-triggerstringhoverXác định điều kiện hiện tooltip trigger. Có thể là hover, click hoặc manual
selectedbooleanĐặt trạng thái của list item thành active
sortablebooleanCho phép vô hiệu hóa sắp xếp item (khi set false). Lưu ý, chỉ hoạt động trên item đầu tiên/ cuối cùng của list.
virtual-list-indexnumberCho phép truyền list item index khi sử dụng Virtual List. Hữu ích khi sử dụng Sortable List giúp biết chính xác các index thay đổi
checkboxbooleanfalseEnables checkbox-item
radiobooleanfalseEnables radio-item
radio-iconstringCho phép tùy chỉnh vị trí của radio icon ra đầu hoặc cuối của list item. Giá trị hợp lệ start or end. Mặc định vị trí của radio icon là cuối của item với theme IOS, đầu list item với theme md trên android
checkedbooleanfalseXác định giá trị của checkbox/radio input là checked hoặc không
default-checkedbooleanXác định giá trị mặc định của checkbox/radio input là checked hoặc không, trong trường hợp dùng uncontrolled component
indeterminatebooleanXác định trạng thái của checkbox input có đang là không xác định hay không (thường sử dụng với select all)
namestringCheckbox/radio input name
valuestring | numberCheckbox/radio input value
readonlybooleanfalseKích hoạt chế độ readonly checkbox/radio
disabledbooleanfalseVô hiệu hóa checkbox/radio
requiredbooleanfalseXác định checkbox/radio là required hoặc không
linkboolean | stringKích hoạt dạng link item, xác định URL trang cần tải.
tab-linkstring | booleanKích hoạt dạng tab link và CSS selector cụ thể của tab mà item liên kết
tab-link-activebooleanXác định trạng thái active của tab mà link liên kết href | string | boolean | # | URL của trang cần tải. Trường hợp href="false" sẽ không thêm href tag vào link element
viewstringCSS selector của View component sẽ tải trang. hoặc current để load trên View component hiện tại.
externalbooleanCho phép mở các external link
backbooleanKích hoạt back navigation link
forcebooleanBuộc tải trang và bỏ qua trang trước đó trong lịch sử (sử dụng cùng với back prop)
reload-currentbooleanTải lại trang mới
reload-previousbooleanTải lại, thay thế các trang trước trong lịch sử với trang mới
reload-allbooleanTải trang mới và xóa tất cả các trang trước ra khỏi lịch sử và DOM
reload-detailbooleanTải lại Trang Detail trong Master Detail view
animatebooleanDisables pages animation
transitionstringTên hiệu ứng chuyển trang (zmp-circle | zmp-cover | zmp-cover-v | zmp-dive | zmp-fade | zmp-flip | zmp-parallax | zmp-push)
ignore-cachebooleanBỏ qua caching
route-tab-idstringRoutable Tab id
route-propsobjectThê props sẽ truyền đến route component đích
prevent-routerbooleanfalseNếu true, link sẽ không được xử lý bởi ZMP router
actions-openstring | booleanCSS selector của action sheet sẽ mở khi người dùng click
actions-closestring | booleanCSS selector của action sheet sẽ đóng khi người dùng click. Hoặc boolean để đóng action sheet đang mở
popup-openstring | booleanCSS selector của popup sẽ mở khi click
sheet-openstring | booleanCSS selector của sheet modal sẽ mở khi click
sheet-closestring | booleanCSS selector của sheet modal sẽ đóng khi người dùng click. Hoặc boolean để đóng sheet modal đang mở
searchbar-enablestring | booleanCSS selector của Expandable Searchbar sẽ kích hoạt khi người dùng click. Hoặc boolean để kích hoạt Searchbar tìm thấy đầu tiên
searchbar-disablestring | booleanCSS selector của Expandable Searchbar sẽ vô hiệu hóa khi người dùng click. Hoặc boolean để vô hiệu hóa Searchbar tìm thấy đầu tiên
searchbar-togglestring | booleanCSS selector của Expandable Searchbar sẽ toggle khi người dùng click. Hoặc boolean để toggle Searchbar tìm thấy đầu tiê
searchbar-clearstring | booleanCSS selector của Expandable Searchbar sẽ xóa dữ liệu khi người dùng click. Hoặc boolean để xóa dữ liệu của Searchbar được tìm thấy đầu tiên

Events

List events

EventDescription
@tab:showEvent sẽ triggered khi trạng thái của List Tab thay đổi thành visible/active
@tab:hideEvent sẽ triggered khi trạng thái của List Tab thay đổi thành invisible/inactive
@submitEvent sẽ triggered khi người dùng submit form (Khi sử dụng form props)
@sortable:enableEvent sẽ triggered khi chế độ sắp xếp là enabled
@sortable:disableEvent sẽ triggered khi chế độ sắp xếp là disabled
@sortable:sortEvent sẽ triggered sau khi người dùng thực hiện xong việc sắp xếp element đến vị trí mới. $event.detail là object chứa các properties: from và to với index number của list item
@virtual:itembeforeinsertEvent sẽ triggered trước khi item đựợc thêm vào virtual document fragment
@virtual:itemsbeforeinsertEvent sẽ triggered sau khi DOM list hiện tại đựợc xóa và trước khi document mới được thêm
@virtual:itemsafterinsertEvent sẽ triggered sau khi document fragment mới với các items được thêm
@virtual:beforeclearEvent sẽ triggered trước khi DOM list hiện tại bị xóa và được thay thế bởi document fragment mới

List Item Events

Thêm event handler thông qua các props: on[EventName]

EventDescription
@clickEvent sẽ triggered khi người dùng clicks lên list item
@changeEvent sẽ triggered khi trạng thai của list item input (radio or checkbox) thay đổi
@tapholdEvent triggered khi người dùng thực hiện nhấn giữ lên List Item element. Lưu ý: cần thêm props :touch="{ tapHold: true }" vào <zmp-app> component để kích hoạt tap hold

Slots

List Slots

SlotDescription
before-listelement sẽ được chèn vào vị trí đầu tiên của list view và ngay trước <ul\> main list element
after-listelement sẽ được chèn vào vị trí cuối của list view và ngay sau <ul\> main list element
listelements sẽ được chèn vào phía trong của <ul\> main list element

List Item Slots

SlotDescription
root-startElement sẽ đuọc chèn vào vị trí đầu tiên của <li\> element
rootRoot-end - element sẽ đuọc chèn vào vị trí cuối cùng của <li\> element
content-startElement sẽ đuọc chèn vào vị trí cuối cùng của <div class="item-content"\> element
content / content-endElement sẽ đuọc chèn vào vị trí cuối cùng của <div class="item-content"\> element
inner-startElement sẽ đuọc chèn vào vị trí cuối cùng của <div class="item-inner"\> element
default / inner / inner-endElement sẽ đuọc chèn vào vị trí cuối cùng của <div class="item-inner"\> element
mediaElement sẽ được chèn vào trong <div class="item-media"\> element
before-titleElement sẽ được chèn ngay trước <div class="item-title"\> element
titleElement sẽ được chèn vào trong <div class="item-title"\> element
after-titleElement sẽ được chèn ngay sau <div class="item-title"\> element
subtitleElement sẽ được chèn vào trong <div class="item-subtitle"\> element
textElement sẽ được chèn vào trong <div class="item-text"\> element
headerLement sẽ được chèn vào trong <div class="item-header"\> element
footerElement sẽ được chèn vào trong <div class="item-footer"\> element
after-startElement sẽ đuọc chèn vào vị trí cuối cùng của <div class="item-after"\> element
after / after-endElement sẽ đuọc chèn vào vị trí cuối cùng của <div class="item-after"\> element

Virtual List Parameters

ParameterTypeDefaultDescription
elHTMLElement | stringList Block element Hoặc sử dụng CSS selector string của list block element
ulHTMLElement | stringList element <ul> được bao bởi List block.
createUlbooleantrueTự đông tạo <ul> element phía bên trong Virtual List block. Trường hợp false, virtual list có thể được sử dụng trên bất kỳ block element nào mà không có cấu trúc ul> li
itemsarrayMảng chứa list items
rowsBeforenumberSố lượng hàng (items) được hiển thị trước vị trí cuộn màn hình hiện tại. Theo mặc định, có giá trị bằng gấp đôi số hàng có thể hiển thị trên màn hình
rowsAfternumberSố lượng hàng (items)) sẽ được hiển thị sau vị trí cuộn màn hình hiện tại. Theo mặc định, có giá trị bằng số lượng hàng (items) có thể hiển thị trên màn hình
colsnumber1Số lượng items trên mỗi hàng. Không tương thích khi sử dụng Virtual List với dynamic height
heightnumber or function(item)Với kiểu number - chiều cao mỗi list item tính theo px. Với kiểu function function cần trả về chiều cao.
renderItemfunction(item)Function tùy ý cho phép render item HTLML. Có thể thay thế cho template parameter
renderExternalfunction(vl, renderParameters)Cho phép render DOM items sử dụng các phương pháp tùy chỉnh. renderParameters chứa object với các properties: fromIndex, toIndex, listHeight, topPosition, items
emptyTemplatestringList item template cho trường hợp list data rỗng
dynamicHeightBufferSizenumber1Cho phép kiểm soát buffer size trên Virtual Lists với chiều cao không cố định (Khi height parameter là function)
cachebooleantrueVô hiệu hóa hoặc cho phép DOM cache cho các list items đã render. Trong trường hợp này, mỗi item sẽ chỉ được hiển thị một lần và tất cả các thao tác tiếp theo sẽ được thực hiện với phần tử DOM.
updatableScrollbooleanIs the current device updates and handles scroll events during scroll. By default (if not specified) it is "false" for all iOS devices with iOS version less than 8.
setListHeightbooleantrueSẽ đặt chiều cao trên list block nếu true
showFilteredItemsOnlybooleanfalseChỉ hiển thị các items đã được lọc
scrollableParentElHTMLElement | stringVirtual list's scrollable parent. Nếu không được chỉ định, sẽ là <div class="page-content"> element
Searchbar
searchByItemfunction(query, item, index)unction tìm kiếm sử dụng bởi Searchbar, nhận vào search query, item và item index. Nếu items thỏa mãn điều kiện tìm kiếm trả về true, ngược lại trả về false false
searchAllfunction(query, items)Function tìm kiếm sử dụng bởi Searchbar, nhận vào search query và mảng tất cả items. Cần return mảng các indexes của các items thỏa mãn điều kiện tìm kiếm

Virtual List Instance Methods & Properties

VirtualList instance cung cấp các methods và properties nâng cao để làm việc với virtual list. Để lấy instance từ component <zmp-list>, ta dùng hàm zmp.virtualList.get(el) để lấy instance.

| Properties | | ------------------------------------------ | ------------------------------------------------------------------------------------------------------- | | virtualList.items | Array chứa list items | | virtualList.filteredItems | Array chứa các items đã được lọc (sau khi sử dụng ".filterItems" method) | | virtualList.domCache | Object với các dom items đã cached | | virtualList.params | Parameters khơi tạo list | | virtualList.el | List block element | | virtualList.$el | ZMP dom instance của list block element | | virtualList.pageContentEl | Parent "page-content" element | | virtualList.$pageContentEl | ZMP dom instance của parent "page-content" element | | virtualList.currentFromIndex | Chỉ mục của item đầu tiên đang được render | | virtualList.currentToIndex | Chỉ mục của item cuối cùng đang được render | | virtualList.reachEnd | Thuộc tính Boolean. Bằng true nếu chỉ mục được hiển thị cuối cùng là chỉ mục cuối cùng của tất cả items | | Methods | | virtualList.filterItems(indexes); | Lọc virtual list bằng mảng các chỉ mục của items cần hiển thị | | virtualList.resetFilter(); | Vô hiệu hóa filter và hiển thị tất cả items | | virtualList.appendItem(item); | Thêm item vào cuối virtual list | | virtualList.appendItems(items); | Thêm mảng các items mới vào cuối virtual list | | virtualList.prependItem(item); | Thêm item vào đầu virtual list | | virtualList.prependItems(items); | Thêm mảng các items vào đầu virtual list | | virtualList.replaceItem(index, item); | Thay thế item thông qua index | | virtualList.replaceAllItems(items); | Thay thế tất cả items với mảng các items mới | | virtualList.moveItem(oldIndex, newIndex); | Thay đổi vị trí của item | | virtualList.insertItemBefore(index, item); | Thêm một item vào trước một item với index được chỉ định | | virtualList.deleteItem(index); | Xóa item có index được chỉ định | | virtualList.deleteItems(indexes); | Xóa các items được chỉ định thông qua mảng các index | | virtualList.deleteAllItems(); | Xóa tất cả items | | virtualList.clearCache(); | Xóa cached DOM elements | | virtualList.destroy(); | Hủy virtual list và gỡ tất cả events | | virtualList.update(); | Cập nhật virtual list, bao gồm tính toán lại kích thước danh sách và hiển thị lại danh sách ảo | | virtualList.scrollToItem(index); | Cuộn đến một item cụ thể |

Ví dụ

Code demo fallback when rendering server side!
Code demo fallback when rendering server side!
Code demo fallback when rendering server side!