国瑞前端
当前位置: Vue > Vue中封装modal模态框组件

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动

html部分

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style type="text/css">
        .demo {
            width: 300px;
            height: 200px;
            border: 1px solid red;
        }
        span {
            width: 100%;
            height: 50px;
            display: block;

        }

        input {
            width: 100px;
            height: 50px;
            background: #ccc;
        }
    </style>
</head>

<body>



    <div id="app">
        <!-- 不写提醒 -->
        <curtom-component>
        </curtom-component>
        <!-- 写了提醒的 -->

        <curtom-component modal-title="提醒" @on-ok="ok" @on-cancel="cancel">
        </curtom-component>

        <curtom-component modal-title="提醒" @on-ok="ok">
            <ul slot="content">
                <li v-for="item in list">{{item}}</li>
            </ul>
            <div slot="footer">
                <strong>确定</strong>
                <strong>返回</strong>
                <strong>重置</strong>
            </div>
        </curtom-component>

        <curtom-component @on-cancel="cancel">

        </curtom-component>


    </div>
</body>

</html>

javascript代码

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.min.js"></script>
<script type="text/javascript">
    //定制模板
    Vue.component('curtom-component', {
        props: {
            modalTitle: {
                type: String,
                default: '这是一个模态框'
            }
        },
        data() {
            return {
                message: "我是子组件的数据"
            }
        },
        template: `
            <div class="demo">
            <h3>{{modalTitle}}</h3>
            <span>
            <slot name="content">
                默认的内容
            </slot>
            </span>
            <slot name="footer">
                <input type="button" name="" value="确定" @click="okHandle">
                <input type="button" name="" value="取消" @click="cancelHandle">
            </slot>
            </div>
        `,
        methods: {
            okHandle() {
                alert("子组件触发");
                this.$emit("on-ok");
            },
            cancelHandle() {
                alert("子组件触发cancel");

                this.$emit("on-cancel");

            }
        }
    })

    var list = [..."爱前端"];


    new Vue({
        el: "#app",
        data: {
            list: list
        },
        methods: {
            ok() {
                alert('改变div样式');
            },
            cancel() {
                alert('退出了');
            }
        }
    })
</script>

封装组件

每个组件会提供一些标准且简单的应用接口,允许使用者设置和调整参数和属性。

可以将不同来源的多个组件有机地结合在一起,快速构成一个符合实际需要的复杂(大型)应用程序。

组件的主要特点:

重用性 --能够公用和通用

可定制性--可设置参数和属性

高内聚性--功能完整

互操作性--多组件协同工作

Vue组件的API来自三部分:

props参数 传递数据给组件

slot定制模板 外部模板混合子组件模板

event自定义事件 监控子组件交互状态

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(36) 打赏

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"Vue中封装modal模态框组件"

最新评论

    暂无留言哦~~

博客简介

国瑞个人博客: https://www.huanggr.cn/,我们关注Web前端开发技术,web前端开发,移动前端开发,前端资讯,同时分享前端资源和工具等,期待你的参与,了解更多..

博主独立研发主题:

广告

广告

广告

广告

精彩评论

广告

站点统计

  • 文章总数: 334 篇
  • 草稿数目: 86 篇
  • 分类数目: 28 个
  • 独立页面: 5 个
  • 评论总数: 109 条
  • 链接总数: 10 个
  • 标签总数: 111 个
  • 注册用户: 176 人
  • 访问总量: 8,658,125 次
  • 最近更新: 2021年7月21日
服务热线:
 

 QQ在线交流

 旺旺在线