zoukankan      html  css  js  c++  java
  • vue 父子通信过程

    1、概述

    每个 Vue 实例都实现了事件接口,即:

    • 使用 $on(eventName) 监听事件
    • 使用 $emit(eventName, optionalPayload) 触发事件

    2、示例一(未传递数据)

    <!DOCTYPE html>
    <html lang="zh">
    
        <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <meta http-equiv="X-UA-Compatible" content="ie=edge" />
            <title>vue 父子通信过程(未传递数据)</title>
        </head>
    
        <body>
            <div id="root">
                <div id="counter-event-example">
                    <p>{{ total }}</p>
                    <button-counter v-on:increment="incrementTotal"></button-counter>
                    <button-counter v-on:increment="incrementTotal"></button-counter>
                </div>
            </div>
            <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    
            <script type="text/javascript">
                Vue.component('button-counter', {
                    template: '<button v-on:click="incrementCounter">{{ counter }}</button>',
                    data: function() {
                        return {
                            counter: 0
                        }
                    },
                    methods: {
                        incrementCounter: function() {
                            this.counter += 1
                            this.$emit('increment')
                        }
                    },
                });
                new Vue({
                    el: '#counter-event-example',
                    data: {
                        total: 0
                    },
                    methods: {
                        incrementTotal: function() {
                            this.total += 1
                        }
                    }
                });
            </script>
        </body>
    
    </html>

    3、示例二(传递数据)

    <!DOCTYPE html>
    <html lang="zh">
    
        <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <meta http-equiv="X-UA-Compatible" content="ie=edge" />
            <title>vue 父子通信过程(传递数据)</title>
        </head>
    
        <body>
            <div id="root">
                <div id="message-event-example" class="demo">
                    <p v-for="msg in messages">{{ msg }}</p>
                    <button-message v-on:message="handleMessage"></button-message>
                </div>
            </div>
            <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    
            <script type="text/javascript">
                Vue.component('button-message', {
                    template: `<div>
                        <input type="text" v-model="message" />
                        <button v-on:click="handleSendMessage">Send</button>
                          </div>`,
                    data: function() {
                        return {
                            message: 'test message'
                        }
                    },
                    methods: {
                        handleSendMessage: function() {
                            this.$emit('message', {
                                message: this.message
                            })
                        }
                    }
                })
    
                new Vue({
                    el: '#message-event-example',
                    data: {
                        messages: []
                    },
                    methods: {
                        handleMessage: function(payload) {
                            this.messages.push(payload.message)
                        }
                    }
                })
            </script>
        </body>
    
    </html>
  • 相关阅读:
    史上最全的正则表达式-匹配中英文、字母和数字
    使用Git分支开发新特性或修复Bug与使用Git分支开发新特性或修复Bug
    装了Yaml 然后代码一运行就报错 YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe.
    mac安装yaml
    如何获取android app的package和Activity
    Original error: No Chromedriver found that can automate Chrome '39.0.0'.
    mac chromedriver安装
    keycode相关方法
    python+appium的物理按键代码
    Python测试Websocket接口
  • 原文地址:https://www.cnblogs.com/mengfangui/p/8931808.html
Copyright © 2011-2022 走看看