成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Vue自定義全局Toast和Loading

RyanQ / 747人閱讀

摘要:如果我們的項(xiàng)目中沒有用到任何框架的話,為了更好的用戶體驗(yàn),肯定會(huì)用到和。那么我們就自定義這兩個(gè)組件吧。組件首先,在下新建文件夾,存放我們的和兩個(gè)文件當(dāng)然文件的具體位置你可以自行安排。最后,只需在要用的地方

如果我們的Vue項(xiàng)目中沒有用到任何UI框架的話,為了更好的用戶體驗(yàn),肯定會(huì)用到loading和toast。那么我們就自定義這兩個(gè)組件吧。

1、Toast組件

首先,在common下新建global文件夾,存放我們的toast.vue和toast.js兩個(gè)文件(當(dāng)然文件的具體位置你可以自行安排)。

(1). toast.vue






(2). toast.js

import Vue from "Vue"
import ToastComponent from "./Toast.vue"

const Toast = {}
let showToast = false // 存儲(chǔ)loading顯示狀態(tài)
let toastNode = null // 存儲(chǔ)loading節(jié)點(diǎn)元素
const ToastConstructor = Vue.extend(ToastComponent)

Toast.install = function (Vue, options) {
  // 參數(shù)
  var opt = {
    duration: "1200"
  }
  for (var property in options) {
    opt[property] = options[property]
  }
  Vue.prototype.$toast = function (tips, type) {
    if (type === "hide") {
      toastNode.isShowToast = showToast = false
    } else {
      if (showToast) {
        // 如果toast還在,則不再執(zhí)行
        return
      }
      toastNode = new ToastConstructor({
        data: {
          isShowToast: showToast,
          content: tips
        }
      })
      toastNode.$mount() // 掛在實(shí)例,為了獲取下面的toastNode.$el
      document.body.appendChild(toastNode.$el)
      toastNode.isShowToast = showToast = true
      setTimeout(function () {
        toastNode.isShowToast = showToast = false
      }, opt.duration)
    }
  };

  ["show", "hide"].forEach(function (type) {
    Vue.prototype.$toast[type] = function (tips) {
      return Vue.prototype.$toast(tips, type)
    }
  })
}

export default Toast

然后,我們需要把寫好的組件在/src/main.js中引用一下。

import Toast from "./components/common/global/toast"

Vue.use(Toast)

最后,怎么使用呢?只需在要用的地方this.$toast.show("hello world")

2、Loading組件

loading組件只需要照著toast組件搬過來,稍微改下就可以了。

首先,在common下新建global文件夾,存放我們的loading.vue和loading.js兩個(gè)文件。

(1). loading.vue






(2). loading.js

import Vue from "Vue"
import LoadingComponent from "./Loading.vue"

const Loading = {}
let showLoading = false // 存儲(chǔ)loading顯示狀態(tài)
let loadingNode = null // 存儲(chǔ)loading節(jié)點(diǎn)元素
const LoadingConstructor = Vue.extend(LoadingComponent)

Loading.install = function (Vue) {
  Vue.prototype.$loading = function (tips, type) {
    if (type === "hide") {
      loadingNode.isShowLoading = showLoading = false
    } else {
      if (showLoading) {
        // 如果loading還在,則不再執(zhí)行
        return
      }
      loadingNode = new LoadingConstructor({
        data: {
          isShowLoading: showLoading,
          content: tips
        }
      })
      loadingNode.$mount() // 掛在實(shí)例,為了獲取下面的loadingNode.$el
      document.body.appendChild(loadingNode.$el)
      loadingNode.isShowLoading = showLoading = true
    }
  };

  ["show", "hide"].forEach(function (type) {
    Vue.prototype.$loading[type] = function (tips) {
      return Vue.prototype.$loading(tips, type)
    }
  })
}

export default Loading

然后,在/src/main.js中引用一下loading組件。

import Loading from "./components/common/global/loading"

Vue.use(Loading)

最后,只需在要用的地方this.$loading.show("hello world")、 this.$loading.hide()

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/103617.html

相關(guān)文章

  • Vue.extend用法(主要用于需要 動(dòng)態(tài)渲染的組件,或者類似于window.alert() 提示

    摘要:一簡單的使用主要用于需要?jiǎng)討B(tài)渲染的組件,或者類似于提示組件注意創(chuàng)建的是一個(gè)組件構(gòu)造器,而不是一個(gè)具體的組件實(shí)例屬于的全局,在實(shí)際業(yè)務(wù)開發(fā)中我們很少使用,因?yàn)橄啾瘸S玫膶懛ㄊ褂貌襟E要更加繁瑣一些。 最近在重構(gòu)公司的項(xiàng)目,有些組件想要封裝的更靈活,例如toast、loading、messageBox等彈窗組件,模仿了mint-ui封裝此類組件的方式封裝了自己的彈窗組件; mint-UI的t...

    masturbator 評論0 收藏0
  • vue2實(shí)踐(持續(xù)更新)

    摘要:記錄一些小技巧和踩過的坑由于本篇文章內(nèi)容太多,導(dǎo)致編輯器有點(diǎn)卡,所以新開辟了一篇實(shí)踐二,后續(xù)再這里更新。組件的生命周期函數(shù)是在標(biāo)簽里的數(shù)據(jù)發(fā)生變化時(shí)候觸發(fā)數(shù)據(jù)可能更新了,但是沒有綁定到上面的話,不會(huì)調(diào)用鉤子函數(shù)。 記錄一些小技巧和踩過的坑 由于本篇文章內(nèi)容太多,導(dǎo)致SF編輯器有點(diǎn)卡,所以新開辟了一篇 vue2實(shí)踐(二),后續(xù)再這里更新。 1. props 帶不帶冒號(hào)的區(qū)別 ...

    n7then 評論0 收藏0
  • 【Geek議題】合理的VueSPA架構(gòu)討論(上)

    摘要:下面也是以模塊的模塊集為例,可以發(fā)現(xiàn)和路由有一些不同就是這里為了防止模塊跟全局耦合,運(yùn)用函數(shù)式編程思想類似于依賴注入,將全局的實(shí)例作為函數(shù)參數(shù)傳入,再返回出一個(gè)包含的對象,這個(gè)導(dǎo)出的對象將會(huì)被以模塊名命名,合并到全局的集中。 前言 web前端發(fā)展到現(xiàn)代,已經(jīng)不再是嚴(yán)格意義上的后端MVC的V層,它越來越向類似客戶端開發(fā)的方向發(fā)展,已獨(dú)立擁有了自己的MVVM設(shè)計(jì)模型。前后端的分離也使前端人...

    worldligang 評論0 收藏0
  • 【Geek議題】合理的VueSPA架構(gòu)討論(上)

    摘要:下面也是以模塊的模塊集為例,可以發(fā)現(xiàn)和路由有一些不同就是這里為了防止模塊跟全局耦合,運(yùn)用函數(shù)式編程思想類似于依賴注入,將全局的實(shí)例作為函數(shù)參數(shù)傳入,再返回出一個(gè)包含的對象,這個(gè)導(dǎo)出的對象將會(huì)被以模塊名命名,合并到全局的集中。 前言 web前端發(fā)展到現(xiàn)代,已經(jīng)不再是嚴(yán)格意義上的后端MVC的V層,它越來越向類似客戶端開發(fā)的方向發(fā)展,已獨(dú)立擁有了自己的MVVM設(shè)計(jì)模型。前后端的分離也使前端人...

    pepperwang 評論0 收藏0
  • vue 在移動(dòng)端體驗(yàn)上的優(yōu)化解決方案

    摘要:去年年底自己搭了一個(gè)在移動(dòng)端的開發(fā)框架,感覺體驗(yàn)不是很好。路由懶加載首頁終于寫完了,以上這些就是我在移動(dòng)端體驗(yàn)優(yōu)化的實(shí)戰(zhàn)。去年年底自己搭了一個(gè)vue在移動(dòng)端的開發(fā)框架,感覺體驗(yàn)不是很好。上個(gè)星期又要做移動(dòng)端的項(xiàng)目了。所以我花了兩天時(shí)間對之前的那個(gè)開發(fā)框架做了以下優(yōu)化 自定義vuex-plugins-loading 路由切換動(dòng)畫 + keep alive 動(dòng)態(tài)管理緩存組件 better-sc...

    godlong_X 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<