Vue中的自定义事件通信

6

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

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

Vue中的自定义事件通信

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<script type="text/javascript" src="vue.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>自定义事件</title>
</head>
<body>
    <div id="app">
        <my-div title="目录" :list="list1"></my-div>
    </div>
</body>

</html>
<script type="text/javascript">
    Vue.component('my-div', {
        props: ['title','list'],
        data(){
           return {
            val:""
           }
        },
        template: `
            <div>
                <input type="" name="" :placeholder="title"  :value="val">
                <my-li :list="list" @valueVal="inputValue"></my-li>
            </div>
        `,
        methods: {
            inputValue(item){
            console.log(item);
                this.val=item;
            }
        }

    })

    Vue.component('my-li', {
        props: ['list'],
        template: `
            <ul>
                <li v-for="item in list" @click="selectValue(item)">{{item}}</li>
            </ul>
            `,
            methods:{
                selectValue(item){
                    console.log(item);
                    //告诉父级
                    this.$emit('valueVal',item);
                }
            }
    })
    new Vue({
        el: "#app",
        data:{
            list1:['北京的那个啥',"上海","深圳"]
        }

    })

/*
    注意:
        1.父组件与子组件进行套用的时候,子组件向父组件传递数据,使用$emit
        $this.$emit('自定义事件名',"需要传递的参数")
        2.data中的数据需要返回

        3.自定义事件需要写在父组件里引用的子组件中。如下所示:
            //父组件
            template: `
                <div>
                    <input type="" name="" :placeholder="title"  :value="val">
                    //子组件
                    <my-li :list="list" @valueVal="inputValue"></my-li>
                </div>
            `,
 */

</script>

作者: huanggr

为您推荐

7

发表评论

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