2020-11-21Vue 父子组件传参,v-model、watch监听 版

<!DOCTYPE html>

<html lang="zh-CN">

<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>Document</title>

  <script src="https://cdn.staticfile.org/vue/2.6.12/vue.min.js"></script>

</head> 

<body>

  <div id="app">

    <h2>父组件:</h2>

    <p>num1: {{num1}}</p>

    <p>num2: {{num2}}</p>

    <cpn @dnm1='dnm1' @dnm2='dnm2'

    :pnum1='num1' :pnum2='num2'

     />    

  </div>

  <template id="cpn">

    <div>

      <h2>子组件props:</h2>

      <p>pnum1: {{pnum1}}</p>

      <p>pnum2: {{pnum2}}</p>

      <h2>子组件data:</h2>

      <p>请输入:</p>

      input1 <input type="text" v-model='dnum1'><br>

      input2 <input type="text" v-model='dnum2'>

      <p>dnum1: {{dnum1}}</p>

      <p>dnum2: {{dnum2}}</p> 

    </div>

  </template>

  <script>

    const cpn = {

      template: '#cpn',

      data() {

        return {

          dnum1: this.pnum1,

          dnum2: this.pnum2

        }

      },

      props: {

        pnum1:  Number,

        pnum2: Number

      },

      methods: {


      },

      watch: {

        dnum1(newValue) {

          this.dnum2= newValue*100;

          this.$emit('dnm1',newValue)

        },

        dnum2(newValue) {

          this.dnum1 = newValue/100;

          this.$emit('dnm2',newValue)

        }

      }

    }

    const vm=new Vue({

      el:'#app',

      data:{

        num1: 0,

        num2: 1

      },

      methods:{

        dnm1(value) {

          this.num1 = value

        },

        dnm2(value) {

          this.num2 = value

        }

      },

      components: {

        cpn

      }

    });

  </script>

</body>

</html>

B站 UP:ilovecoding 视屏课案例
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容