vue3限制table表格選項個數(shù)的解決方法
問題描述
提示:這里描述具體問題:我們再用table表格的時候多多少少都會有限制個數(shù)的時候,在正常的表格上只有單選或或者多選的樣式,沒有在多選里面添加最多選幾個選項的屬性。
例如:我在table表格中只想選擇兩項。
原因分析:
提示:這里填寫問題的分析:當前quasar框架不支持個數(shù)選擇,只能自己來實現(xiàn)。
解決方案:
提示:這里填寫該問題的具體解決方案:在選擇框中有一個屬性是selected-rows-label,這個數(shù)屬性是當有選擇框被點中的時候就會觸發(fā)。利用這個屬性來控制個數(shù)。原理是,在table中綁定一個數(shù)據(jù),當勾選了一個選項時就會把選擇的數(shù)據(jù)添加到這個數(shù)據(jù)中,進而會觸發(fā)selected-rows-label屬性,這個屬性綁定一個函數(shù),在函數(shù)中實現(xiàn)數(shù)據(jù)屬性的長度。當數(shù)據(jù)長度大于2的時候就設置為2。這樣就實現(xiàn)控制選項個數(shù)。
例如:下面就是我做的實驗。在table可選這數(shù)據(jù)的時候限制只需選擇兩項。
下面是頁面代碼:
<div id="q-app" style="min-height: 100vh;"> ? <div class="q-pa-md"> ? ? <q-table ? ? ? title="Treats" ? ? ? :rows="rows" ? ? ? :columns="columns" ? ? ? row-key="name" ? ? ? :selected-rows-label="getSelectedString" ? ? ? selection="multiple" ? ? ? v-model:selected="selected" ? ? ></q-table> ? ? <div class="q-mt-md"> ? ? ? Selected: {{ JSON.stringify(selected) }} ? ? </div> ? </div> </div>
下面js代碼:
const { ref } = Vue const columns = [ ? { ? ? name: 'desc', ? ? required: true, ? ? label: 'Dessert (100g serving)', ? ? align: 'left', ? ? field: row => row.name, ? ? format: val => `${val}`, ? ? sortable: true ? }, ? { name: 'calories', align: 'center', label: 'Calories', field: 'calories', sortable: true }, ? { name: 'fat', label: 'Fat (g)', field: 'fat', sortable: true }, ? { name: 'carbs', label: 'Carbs (g)', field: 'carbs' }, ? { name: 'protein', label: 'Protein (g)', field: 'protein' }, ? { name: 'sodium', label: 'Sodium (mg)', field: 'sodium' }, ? { name: 'calcium', label: 'Calcium (%)', field: 'calcium', sortable: true, sort: (a, b) => parseInt(a, 10) - parseInt(b, 10) }, ? { name: 'iron', label: 'Iron (%)', field: 'iron', sortable: true, sort: (a, b) => parseInt(a, 10) - parseInt(b, 10) } ] const rows = [ ? { ? ? name: 'Frozen Yogurt', ? ? calories: 159, ? ? fat: 6.0, ? ? carbs: 24, ? ? protein: 4.0, ? ? sodium: 87, ? ? calcium: '14%', ? ? iron: '1%' ? }, ? { ? ? name: 'Ice cream sandwich', ? ? calories: 237, ? ? fat: 9.0, ? ? carbs: 37, ? ? protein: 4.3, ? ? sodium: 129, ? ? calcium: '8%', ? ? iron: '1%' ? }, ? { ? ? name: 'Eclair', ? ? calories: 262, ? ? fat: 16.0, ? ? carbs: 23, ? ? protein: 6.0, ? ? sodium: 337, ? ? calcium: '6%', ? ? iron: '7%' ? }, ? { ? ? name: 'Cupcake', ? ? calories: 305, ? ? fat: 3.7, ? ? carbs: 67, ? ? protein: 4.3, ? ? sodium: 413, ? ? calcium: '3%', ? ? iron: '8%' ? }, ? { ? ? name: 'Gingerbread', ? ? calories: 356, ? ? fat: 16.0, ? ? carbs: 49, ? ? protein: 3.9, ? ? sodium: 327, ? ? calcium: '7%', ? ? iron: '16%' ? }, ? { ? ? name: 'Jelly bean', ? ? calories: 375, ? ? fat: 0.0, ? ? carbs: 94, ? ? protein: 0.0, ? ? sodium: 50, ? ? calcium: '0%', ? ? iron: '0%' ? }, ? { ? ? name: 'Lollipop', ? ? calories: 392, ? ? fat: 0.2, ? ? carbs: 98, ? ? protein: 0, ? ? sodium: 38, ? ? calcium: '0%', ? ? iron: '2%' ? }, ? { ? ? name: 'Honeycomb', ? ? calories: 408, ? ? fat: 3.2, ? ? carbs: 87, ? ? protein: 6.5, ? ? sodium: 562, ? ? calcium: '0%', ? ? iron: '45%' ? }, ? { ? ? name: 'Donut', ? ? calories: 452, ? ? fat: 25.0, ? ? carbs: 51, ? ? protein: 4.9, ? ? sodium: 326, ? ? calcium: '2%', ? ? iron: '22%' ? }, ? { ? ? name: 'KitKat', ? ? calories: 518, ? ? fat: 26.0, ? ? carbs: 65, ? ? protein: 7, ? ? sodium: 54, ? ? calcium: '12%', ? ? iron: '6%' ? } ] const app = Vue.createApp({ ? setup () { ? ? const selected = ref([]) ? ? return { ? ? ? selected, ? ? ? columns, ? ? ? rows, ? ? ? getSelectedString () { ? ? ? ? if(selected.value.length > 2){ ? ? ? ? ? **selected.value.length = 2** ? ? ? ? ? return 0 ? ? ? ? } else { ? ? ? ? ? return selected.value.length === 0 ? '' : `${selected.value.length} record${selected.value.length > 1 ? 's' : ''} selected of ${rows.length}` ? ? ? ? } ? ? ? ?? ? ? ? } ? ? } ? } }) app.use(Quasar, { config: {} }) app.mount('#q-app')
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Vue中 key keep-alive的實現(xiàn)原理
這篇文章主要介紹了Vue中 key keep-alive的實現(xiàn)原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09vue刷新頁面后params參數(shù)丟失的原因和解決方法
這篇文章主要給大家介紹了vue刷新頁面后params參數(shù)丟失的原因和解決方法,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2023-12-12分析 Vue 中的 computed 和 watch 的區(qū)別
這篇文章分析 Vue 的 computed 和 watch 的區(qū)別,computed 用來監(jiān)控自己定義的變量,頁面上可直接使用。watch 是監(jiān)測 Vue 實例上的數(shù)據(jù)變動,通俗地講,就是檢測 data 內聲明的數(shù)據(jù),需要的朋友可以參考一下2021-09-09antd vue 刷新保留當前頁面路由,保留選中菜單,保留menu選中操作
這篇文章主要介紹了antd vue 刷新保留當前頁面路由,保留選中菜單,保留menu選中操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08vue3項目導入異常Error:@vitejs/PLUGIN-vue?requires?vue?(>=3.2.13
這篇文章主要給大家介紹了關于vue3項目導入異常Error:@vitejs/PLUGIN-vue?requires?vue?(>=3.2.13)的解決辦法,文中將解決辦法介紹的非常詳細,需要的朋友可以參考下2024-01-01Message組件實現(xiàn)發(fā)財UI?示例詳解
這篇文章主要為大家介紹了Message組件實現(xiàn)發(fā)財UI的手寫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08