zoukankan      html  css  js  c++  java
  • Vue 子组件向父组件传参

    直接上代码

      

    复制代码
    <body>
        <div id="counter-event-example">
          <p>{{ total }}</p>
          <button-counter v-on:ee="incrementTotal"></button-counter>
          <button-counter v-on:ee="incrementTotal"></button-counter>
        </div>
    
        <script>
            Vue.component('button-counter', {
              template: '<button v-on:click="increment">{{ counter }}</button>',
              data: function () {
                return {
                  counter: 0
                }
              },
              methods: {
                increment: function () {
                  this.counter += 1
                  this.$emit('ee', 'cc' )
                }
              },
            })
            new Vue({
              el: '#counter-event-example',
              data: {
                total: 'arg'
              },
              methods: {
                incrementTotal: function (b) {
                  this.total  = b + '1';
                }
              }
            })
        </script>
    </body>
    复制代码

      子组件通过$emit触发父组件的事件,$emit后面的参数是向父组件传参,注意,父组件的事件处理函数直接写函数名即可,不要加(),参数直接传递到了父组件的methods的事件处理函数了。

      另外,写一个小拾遗。vue子组件用了定义模板组件功能,然后在父组件里定义一个HTML元素绑定这个子组件后才能在父组件通过这个HTML元素使用。

      再说一个非常方便的v-ref

    复制代码
    <body>
        <div id="parent">
            <user-profile v-ref:profile></user-profile>
        </div>
    
        <script>
            Vue.component('user-profile', {
                template: '<span>{{ msg }}</span>',
                data: function () {
                    return {msg: 123};
                },
                methods: {
                    greet: function () {
                        console.log('hhhhh');
                    }
                }
    
            })
            var parent = new Vue({el: '#parent'});
            var child = parent.$refs.profile;
            child.greet();
        </script>
    </body>




    demo

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
    </head>
    <body>
        <div id="counter-event-example">
          <p>{{ total }}</p>
          <button-counter  v-on:ee="incrementTotala"></button-counter>
          <button-counter  v-on:ee="incrementTotala"></button-counter>
        </div>    

        <script>
            Vue.component('button-counter', {
              template: '<button v-on:click="increment">{{ counter }}</button>',
              data: function () {
                return {
                  counter: 0
                }
              },
              methods: {    
                increment: function () {
                  this.counter += 1
                  this.$emit('ee', this.counter ) //向父组件传递参数
                }
              },
            })
            new Vue({
              el: '#counter-event-example',
              data: {
                total: 'arg'
              },
              methods: {
                incrementTotala: function (b,d) {
                  this.total  = b;
                }
              }
            })
        </script>
    </body>
    </html>
  • 相关阅读:
    Python列表和元组知识点
    Python 字符串操作常用知识点
    ng-alain的sf如何自定义部件
    Spring-手写Spring注解版本事务,Spring事物的七大传播行为
    Spring-SpringAOP原理,手写Spring事务框架
    JVM性能优化--类加载器,手动实现类的热加载
    JVM性能优化--字节码技术
    JVM性能优化--JVM参数配置,使用JMeter简单测试配合说明参数调优
    JVM性能优化--Java的垃圾回收机制
    设计模式之原型模式、策略模式、观察者模式
  • 原文地址:https://www.cnblogs.com/tiancai/p/7884666.html
Copyright © 2011-2022 走看看