天天看點

vue19-擷取子元件引用 ref

下面代碼是一個計數器的功能,首先看下面代碼:

<!DOCTYPE html>
<html lang=en>
    <head>
        <meta charset="utf-8"/>
        <title>Hello world</title>
        <script src="vue.js"></script>
    </head>
    <body>
        <div id="root">
            <div ref="one" is="counter" @sumadd="handlerAdd"></div>
            <div ref="two" is="counter" @sumadd="handlerAdd"></div>
            <div>{{sum}}</div>
        </div>


        <script>
            Vue.component("counter",{
                template:'<div @click="handlerClick">{{count}}</div>',
                data: function(){
                    return {
                        count:0
                    }
                },
                methods:{
                    handlerClick: function(){
                        this.count++;
                        this.$emit("sumadd");
                    }
                }
            })

            var vm = new Vue({
               el:"#root",
               data:{
                   sum:0
               },
               methods:{
                handlerAdd: function(){
                    this.sum= this.$refs.one.count+this.$refs.two.count;
                }
               }
            
            })

        </script>
    </body>
</html>      

我們定義了一個元件counter,在html中兩個div标簽對元件做了引用,一個ref設定one,一個ref設定為two。

第三個div是上面兩個div數字的和,我們做的效果就是上面兩個div數字增加時,擷取兩個元件的值,顯示到第三個div标簽中。

(當ref在html标簽上時,是對dom的引用,當ref在元件上時,是對元件的引用)