• 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>
  • 相关阅读:
    read_csv 函数
    fillna()
    一个逗号引发的错误
    数据预处理
    groupby()
    泰坦尼克号 预处理
    python string
    python title()的用法
    translate()函数及ROT13加密
    python Lambda, filter, reduce and map
  • 原文地址:https://www.cnblogs.com/tiancai/p/7884666.html
Copyright © 2020-2023  润新知