【框架】弹出框
需求
1.调用页面不用手动引用模板文件
2.展示状态可控
3.内容可选和自定义
原理
1.vue的构造器vue.extend(option)
2.vue的jsx写法(推荐)
3.Promise(可选)
代码示例
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36import vue from 'vue' import "./message.less" //弹出框的样式文件 //创建构造器 const Info = vue.extend({ render() { return (this.show ? <div class="Message"> <SlotContent /> //因为这里是作为构造器的内容,这里的插槽不能用{this.$slots.SlotContent}替代 </div> : null); }, }) //将生成函数挂载到vue的原型上,方便全局调用 vue.prototype.$info =(render)=>{ // @render 自定义渲染 return new Promise(resolve=>{//使用promise方便控制弹出框的状态 const InfoDom = new Info({ el: document.createElement('div'), components: { SlotContent: { render } }, data() { return { show: true } }, methods: { Close() { this.show = false; } } }) document.body.appendChild(InfoDom.$el)//将生成的dom添加到页面 resolve(InfoDom) //将生成的弹出框对象返回给调用 }) }
示例说明
示例为js文件,到vue项目中main.js引用后,可用如下的方式在此项目的任何地方调用
复制代码
1
2
3
4vm.$info(()=>{ return <div>hello world!</div> })
因为返回的是一个pormise对象,可获取到生成的弹出框对象实例,以此来控制弹出框的状态
额外说明
示例中的参数是vue的render函数,在实际使用中可以根据需要配合模板配置参数来增加耦合度,如果不喜欢用promise的方式获取到实例对象,也可以放在参数中传入。
最后
以上就是要减肥老师最近收集整理的关于【框架】弹出框【框架】弹出框的全部内容,更多相关【框架】弹出框【框架】弹出框内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复