Vue中封装modal模态框组件

6

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。…

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自定义事件 监控子组件交互状态

作者: huanggr

为您推荐

7

发表评论

电子邮件地址不会被公开。 必填项已用*标注