Создание таблиц с нуля - это боль.
Вот почему существует множество плагинов для таблиц, которые позволяют легко добавлять таблицы.
В этой статье мы рассмотрим, как добавлять таблицы в приложение Vue с помощью плагина vue-good-table.
Добавление настраиваемых столбцов
Мы можем добавлять столбцы, которые не созданы из свойств объектов строк.
Например, мы можем написать:
<template> <div> <vue-good-table :columns="columns" :rows="rows"> <template slot="table-row" slot-scope="props"> <span v-if="props.column.field === 'before'">before</span> <span v-else>{{props.formattedRow[props.column.field]}}</span> </template> </vue-good-table> </div> </template> <script> export default { data() { return { columns: [ { label: "Name", field: "name" }, { label: "Age", field: "age", type: "number" }, { label: "Birthday", field: "birthDay", type: "date", dateInputFormat: "yyyy-MM-dd", dateOutputFormat: "MMM do yy" }, { label: "Before", field: "before" } ], rows: [ { id: 1, name: "John", age: 20, birthDay: "2000-01-20" }, { id: 2, name: "Jane", age: 24, birthDay: "1996-10-31" }, { id: 3, name: "Mary", age: 16, birthDay: "2004-10-30" } ] }; } }; </script>
Мы заполняем слот table-row
содержимым, которое хотим отобразить в ячейках столбца.
props.formattedRow[props.column.field]
отображает данные из свойств объекта строки.
props.column.field
имеет имя поля.
В массив columns
добавлен столбец 'before'
, который не создан на основе свойства строки.
Настраиваемые заголовки столбцов
Мы также можем создавать собственные заголовки столбцов.
Для этого мы заполняем слот table-column
нашим собственным контентом.
Затем мы можем проверить props.column.label
, чтобы проверить заголовок столбца, который мы хотим изменить.
Например, мы можем написать:
<template> <div> <vue-good-table :columns="columns" :rows="rows"> <template slot="table-column" slot-scope="props"> <span v-if="props.column.label === 'Name'"> <em>{{props.column.label}}</em> </span> <span v-else>{{props.column.label}}</span> </template> </vue-good-table> </div> </template> <script> export default { data() { return { columns: [ { label: "Name", field: "name" }, { label: "Age", field: "age", type: "number" }, { label: "Birthday", field: "birthDay", type: "date", dateInputFormat: "yyyy-MM-dd", dateOutputFormat: "MMM do yy" } ], rows: [ { id: 1, name: "John", age: 20, birthDay: "2000-01-20" }, { id: 2, name: "Jane", age: 24, birthDay: "1996-10-31" }, { id: 3, name: "Mary", age: 16, birthDay: "2004-10-30" } ] }; } }; </script>
У нас есть слот table-column
с проверкой prop.column.label
для проверки заголовка столбца, который мы хотим изменить.
Мы делаем отображение столбца Name курсивным шрифтом с тегом em
.
Таблица флажков
Мы можем добавить таблицу с выбираемыми строками.
Для этого мы можем написать:
<template> <div> <vue-good-table :columns="columns" :rows="rows" :select-options="{ enabled: true, selectOnCheckboxOnly: true, selectionInfoClass: 'selected', selectionText: 'rows selected', clearSelectionText: 'clear', disableSelectInfo: true, selectAllByGroup: true, }" ></vue-good-table> </div> </template> <script> export default { data() { return { columns: [ { label: "Name", field: "name" }, { label: "Age", field: "age", type: "number" }, { label: "Birthday", field: "birthDay", type: "date", dateInputFormat: "yyyy-MM-dd", dateOutputFormat: "MMM do yy" } ], rows: [ { id: 1, name: "John", age: 20, birthDay: "2000-01-20" }, { id: 2, name: "Jane", age: 24, birthDay: "1996-10-31" }, { id: 3, name: "Mary", age: 16, birthDay: "2004-10-30" } ] }; } }; </script>
Мы добавляем опору selected-options
к объекту.
Свойство enabled
позволяет нам разрешить выбор строки.
selectOnCheckOnly
позволяет нам выбирать строки, когда мы снимаем флажок.
selectionText
позволяет отображать количество строк, выделенных нашим собственным текстом.
clearSelectionText
- текст, отображаемый в ссылке, чтобы очистить выбор.
disableSelectInfo
позволяет нам отключить информацию о выбранной строке. Эта информация должна отображаться над таблицей, если она false
.
И selectAllByGroup
позволяет нам установить, можем ли мы выбрать все строки сразу.
Заключение
Мы можем изменять столбцы и строки, чтобы отображать то, что мы хотим, заполняя слоты.
Кроме того, мы можем сделать строки доступными для выбора.