关于vue.js:Vue2父子组件通信

5次阅读

共计 742 个字符,预计需要花费 2 分钟才能阅读完成。

父组件注入数据子组件通过 props 接管
子组件 emit 数据父组件通过 @ 监听

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title></title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
  <div id="app">
    <div>
      <myinput @add="add" />
    </div>
    <div>
      <mylist :list="list"/>
    </div>
  </div>
</body>
<script>
  Vue.component('myinput', {
    template: `
      <div>
        <input v-model="title">
        <button @click="add"> add </button>
      </div>
    `,
    data() {
      return {title: '',}
    },
    methods: {add() {this.$emit('add', this.title)
      }
    }
  })
  Vue.component('mylist', {
    template: `
      <ul>
        <li v-for="item in list" :key="item.id">
          {{item.title}}
        </li>
      </ul>
    `,
    props: {list: Array}
  })
  // 
  var app = new Vue({
    el: '#app',
    data: {
      list: [
        {
          id: 1,
          title: 'title1',
        },
        {
          id: 2,
          title: 'title2',
        },
      ],    
    },
    methods: {add(title) {
        this.list.push({id: Math.random(),
          title,
        })
      }
    }
  })
</script>
</html>
正文完
 0