美文网首页
vue中ref的强大作用力

vue中ref的强大作用力

作者: 初柚_eeab | 来源:发表于2019-12-02 11:34 被阅读0次

    1.vue中的ref作用

    (1)基本作用是在本页面获取dom元素

    <template>

      <div id="app">

        <div ref="testDom">11111</div>

      <button @click="getTest">获取节点</button>

      </div>

    </template>

    <script>

    export default {

      methods: {

        getTest() {

          console.log(this.$refs.testDom)

        }

      }

    };

    </script>

    (2)也可以拿到子组件中的data

    子组件如下

    <template>

      <div>

          {{ msg }}

      </div>

    </template>

    <script>

    export default {

      data() {

        return {

          msg: "hello world"

      }

    }

    }

    </script>

    父组件如下

    <template>

      <div id="app">

        <HelloWorld ref="hello"/>

        <button @click="getHello">获取helloworld组件中的值</button>

      </div>

    </template>

    <script>

    import HelloWorld from "./components/HelloWorld.vue";

    export default {

      components: {

        HelloWorld

      },

      data() {

        return {}

      },

      methods: {

        getHello() {

          console.log(this.$refs.hello.msg)

        }

      }

    };

    </script>

    (3)还可以去调用子组件中的方法

    子组件如下

    <template>

      <div></div>

    </template>

    <script>

    export default {

      methods: {

        open() {

          console.log("调用成功")

        }

      }

    }

    </script>

    父组件如下

    <template>

      <div id="app">

        <HelloWorld ref="hello"/>

        <button @click="getHello">获取helloworld组件中的值</button>

      </div>

    </template>

    <script>

    import HelloWorld from "./components/HelloWorld.vue";

    export default {

      components: {

        HelloWorld

    },

      data() {

        return {}

      },

      methods: {

        getHello() {

          this.$refs.hello.open();

        }

      }

    };

    </script>

    子组件调用父组件方法

    子组件如下

    <template>

      <div></div>

    </template>

    <script>

    export default {

      methods: {

        open() {

          console.log("调用成功了");

          //  调用父组件方法

          this.$emit("refreshData");

        }

    }

    }

    </script>

    父组件如下

    <template>

      <div id="app">

              <HelloWorld ref="hello" @refreshData="getData"/>

            <button @click="getHello">获取helloworld组件中的值</button>

          </div>

      </template>

      <script>

      import HelloWorld from "./components/HelloWorld.vue";

      export default {

          components: {

            HelloWorld

          },

          data() {

            return {}

          },

          methods: {

            getHello() {

                this.$refs.hello.open()

            },

            getData() {

                console.log('我是程序员')

            }

          }

      };

      </script>

    以上代码展示效果图我就不贴了,感兴趣的朋友可以试一下

    相关文章

      网友评论

          本文标题:vue中ref的强大作用力

          本文链接:https://www.haomeiwen.com/subject/ztbxgctx.html