第一步在components里面建立toast文件夹里面包含两个文件 一个toast.vue 一个index.js
第二部在js中引入vue 在引入当前创建的toast.vue文件 在定义一个constructoe = Vue.extend() 实例构造器
import Vue from 'vue'
import Main from './toast'
let ToastConstructor = Vue.extend(Main)
定义常量 并传入参数 在导出常量
const Toast = (options) => {
//这里是内容
....
}
export default Toast
重点来了
先要new一下Vue.extend出来的构造器让其生成实例
let instance = new ToastConstructor({
data: options// 重置该实例的data数据 也就是toastVue里面的data数值
})
挂载
let toastVm = instance.$mount()
添加到页面上
document.body.appendChild(toastVm.$el)
toast.js的完整代码
import Vue from 'vue'
import Main from './toast'
let ToastConstructor = Vue.extend(Main)
const Toast = (options) => {
options = options || {}
if (typeof options === 'string') {
options = {
message: options
}
}
let instance = new ToastConstructor({
data: options
})
let toastVm = instance.$mount()
document.body.appendChild(toastVm.$el)
}
export default Toast
最后调用在main.js里面
//Vue.use(Toast)//use是直接执行
Vue.prototype.$Toast = Toast
在页面中使用直接调用即可
this.$Toast('我是toast')
其中有一个小插曲就是一直在报错’template or render function not defined.‘ 开始的时候一直在查找js 也定位了 就是mount的时候报的错。最后发现是在vue页面不小心加了一行乱七八糟的代码,以此为纪,让自己长记性不要老想当然?