App页面

作者: 前端许 | 来源:发表于2021-12-20 16:55 被阅读0次

<template>

  <div id="app">

    <!-- 组件引入是用两个单词首字母大写的方式引入的

    可以使用小写加-分割 -->

    <!-- .sync 同步修饰符 语法糖 -->

    <!-- ★注意这里是两个组件都在mounted里面触发方法的 -->

    <!-- 两个组件加载的顺序 和你使用时候 使用顺序有关

    比如child-new在前面就先执行 child-new2在后面就后执行  -->

    <!-- 补充★ -->

    <!-- 通过事件总线方式,我们知道了,两个组件实际上在App.vue

    里面的加载是异步的,组件2里面使用created调用方法,肯定比组件1

    里面使用mounted加载的块,使用事件总线是需要先监听事件,这样

    自定义事件触发的时候才可以被知道 -->

    <child-new

      :cList="arrList"

      @delItem="aDel"

      ref="childnew"

      :ctitle.sync="title"

      @childAHandle="AHandle"

    />

    <child-new2

      :childval2="Aval"

    />

  </div>

  <!-- 通过.sync语法糖的形式

  子组件修改父组件传过来的值 -->

</template>

<script>

/* import路径后面的.vue文件名可以省略 */

/* 在vue3里面不推荐使用@,推荐使用相对路径 */

import ChildNew from '@/components/ChildNew'

import ChildNew2 from '@/components/ChildNew2'

export default {

  name: 'App',

  components:{

    ChildNew,

    ChildNew2,

  },

  data(){

    return {

      title:{name:"zhangsan"},

      arrList:[{

        name:"张三",

        age:20

      },{

        name:"李四",

        age:30

      },{

        name:"王五",

        age:40

      }],

      Aval:""

    }

  },

  mounted(){

    /* 获得子组件的dom元素 */

    console.log(this.$refs.childnew);

    /* 在父组件里面去操作子组件的dom元素 */

    // this.$refs.childnew.$el.innerHTML = "<h1>我修改了子组件里面的元素内容</h1>"

    /* 触发子组件内部的方法 */

    this.$refs.childnew.toast();

    /* 获取子组件内部data的属性 */

    console.log(this.$refs.childnew.aa);

    /* 定义一个子组件 在父组件上通过ref 把子组件的整个背景改成红色 */

    this.$refs.childnew.$el.style.background = 'red';

  },

  methods:{

    AHandle(val){

      this.Aval = val;

     /*  console.log(this.Aval); */

    },

    aDel(i){

      this.arrList.splice(i,1)

    }

  }

}

</script>

<style>

*{margin:0;padding: 0;}

</style>

相关文章