首頁 > 軟體

詳解vue3+quasar彈窗的幾種方式

2022-08-09 10:00:53

1. 滑鼠懸浮時的提示(Quasar Tooltip元件)

quasar tooltip元件
當希望將滑鼠懸停在目標元素上會顯示提示訊息時,可以使用html中的title屬性,但使用title屬性出現的提示框樣式可能並不是我們想要的,這時候可以使用quasar提供的tooltip元件。

可以看到,target預設為true,則會預設將 tooltip 的父元素作為觸發tooltip的目標,即滑鼠經過tooltip的父元素時,tooltip就會顯示。

<q-btn color="primary" label="tooltip的父元素" size="24px">
    <q-tooltip>我在這</q-tooltip>
</q-btn>

也可以用String型別指定觸發 tooltip的目標元素。

 <q-btn color="primary" label="tooltip的父元素" size="24px">
        <q-tooltip target=".hover-me">我在這</q-tooltip>
  </q-btn>

  <q-btn class="hover-me" label="tooltip指定的target元素"></q-btn>

其他詳見官方檔案。

2. 點選某按鈕後出現自定義的彈窗

2.1 點選某按鈕後出現自定義的彈窗(vue方法)

效果圖
點選“+”按鈕後彈出選項列表Member子元件,
點選Member子元件上的按鈕時關閉彈窗。

子元件:

父元件

注意:有需要時可以給子元件Member設定一個z-index的樣式。

知識點

vue 元件 官方檔案:https://staging-cn.vuejs.org/guide/components/registration.html
1、父元件可以使用 props 把資料傳給子元件。
2、子元件可以使用 $emit 觸發父元件的自定義事件。

2.2 點選某按鈕後出現自定義的彈窗(quasar QDialog元件)

quasar dialog元件通過繫結的值來決定是否顯示該彈窗,值可以使用model-value進行繫結,也可以使用v-model進行繫結。

使用model-value進行繫結時,需要使用:

<q-dialog :model-value="showFlag" persistent>
   ...
</q-dialog>

//or
<q-dialog v-model="showFlag" persistent>
   ...
</q-dialog>

上述同樣的效果也可用以下程式碼實現:

父元件

<template>
  <div>
     <q-btn round unelevated outline text-color="grey-8" icon="add" class="bg-white" @click="openMember"/>
     <q-dialog :model-value="showFlag" persistent>
          <Member  @close="closeMember"></Member>
     </q-dialog>
   </div>
</template>

<script setup>
import {ref, reactive, watch} from 'vue'
import Member from '../components/Member.vue'

let showFlag = ref(false);

function openMember() {
  showFlag.value = true;
}

function closeMember(list) {
  showFlag.value = false;
  taskInfo.receiverList = list;
}
</script>

<style></style>

子元件Member.vue

<template>
    <div class="q-pa-sm member-list bg-white shadow-1">
      <q-option-group v-model="group" :options="options" color="green" type="checkbox" class="list"/>
      <div class="q-mt-md q-pl-sm row">
        <q-btn class="bg-white q-mr-lg" unelevated outline  text-color="grey-8" label="取消"
               @click="$emit('close')"/>
        <q-btn class="btn-sure" unelevated filled text-color="white" label="確定"
               @click="$emit('close', group)"/>
      </div>
    </div>
</template>

<script setup>
import { ref, watch } from 'vue'
const group = ref([]);
const options = [
  {
    label: '何11',
    value: 'op4'
  },
  {
    label: '何22',
    value: 'op5'
  },
  {
    label: '何33',
    value: 'op6'
  },
  {
    label: '何44',
    value: 'op7'
  },
  {
    label: '何55',
    value: 'op8'
  },
  {
    label: '何66',
    value: 'op9'
  }
];

const emit = defineEmits(['close'])
</script>

<style scoped lang="scss">

.member-list {
  width: 200px;
  border: 1px solid #ffe5e5;
  z-index: 21;
  .list{
    height: 240px;
    overflow: auto;
  }
}

.btn-sure {
  background-color: #9abee8;
}
</style>

使用 dialog 元件還有一個好處就是可以通過transition-show和transition-hide設定彈窗時的動畫,詳見官方檔案。

3. 彈出操作列表/選單列表(quasar Qmenu元件)

Quasar QMenu元件

<template>
<q-btn label="..." unelevated>
    <q-menu class="bg-grey-10 text-grey-2">
       <q-list>
          <q-item v-close-popup clickable @click="showDate(task.id)">
              <q-item-section>更改截止日期</q-item-section>
          </q-item>
          <q-separator class="bg-grey-5 q-mx-xs"/>
          <q-item v-close-popup clickable @click="deleteConfirm(task.id)">
              <q-item-section>刪除任務</q-item-section>
           </q-item>
        </q-list>
     </q-menu>
</q-btn>
</template>

QMenu同樣有target屬性,其預設為true,會預設將 menu 的父元素作為觸發menu的目標,即點選 menu的父元素時, menu就會顯示。

4. 彈出一個操作確認框(Quasar Dialog外掛)

quasar Dialog外掛能實現類似html的window.confirm()的功能。

使用前需先安裝和引入,具體教學見官網。

以下截圖僅展示在Vite/Vue CLI專案中的使用:

使用範例:

<script setup>
import { ref } from "vue"
import { useQuasar } from 'quasar'

const $q = useQuasar()

function deleteUser(index) {
  $q.dialog({
    title: 'Confirm',
    message: '請確認是否刪除該使用者',
    cancel: "取消",
    ok: "確定",
    persistent: true
  }).onOk(() => {
    console.log('>>>> 刪除了使用者' + index)
  }).onCancel(() => {
    console.log('>>>> 取消了刪除使用者操作')
  })
}
</script>

5. 彈出一個提示框(Quasar Notify外掛)

如果僅需彈出一個提示訊息而不需要使用者進行其他操作,則可使用Quasar 的 Notify外掛

同樣需要安裝後才能使用:

使用範例:

<script setup>
import { ref } from "vue"
import { useQuasar } from 'quasar'

const $q = useQuasar()

function doAddUser(newUser) {
  if (newUser.account.trim() && newUser.password.trim()) {
  	
    }
  else {
    $q.notify(
        {
          message: "請輸入賬號和密碼",
          position: "center",
          timeout: 5
        }
    )
  }
}

</script>

6. Quasar QPopupProxy

Quasar QPopupProxy 元件

到此這篇關於詳解vue3+quasar彈窗的幾種方式的文章就介紹到這了,更多相關vue3 quasar 彈窗內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com