美文网首页
Vue 父子组件的数据传递(一)

Vue 父子组件的数据传递(一)

作者: 云凡的云凡 | 来源:发表于2020-10-06 06:59 被阅读0次

组件之间数据传递

父传子:在父组件通过 v-bind 属性绑定传递
<todo-item v-for="item in list" :key="iten" v-bind:content='item'  v-bind:index="index" ></todo-item>

子组件通过props接收父组件传过来的数据

 props: [
                 'content', 'index'
            ],
子传父:在子组件通过 v-on 事件绑定触发
//1
 template: "<li v-on:click='handleItemDel'>{{content}}</li>",
//2
 methods:{
                //点击子组件时,会向外触发一个deleteItem事件
                handleItemDel(){
                    this.$emit('delete',this.index)
                }
            }
//3在父组件创建子组件的同时,可以去监听这个delete事件

<todo-item v-for="item in list" :key="iten" v-bind:content='item'  v-bind:index="index"  @delete="handleItemDelete"></todo-item>
//通过下标实现删除项
 handleItemDelete(index) {
                    console.log(index);
                    this.list.splice(index, 1)
                }

父传子 & 子传父 完整代码

<!DOCTYPE html>
<html lang="en">

<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>3使用组件化思想修改TodoList</title>
   <script src="./vue.js"></script>
</head>

<body>
   <div id="app">
       <input type="text" v-model="inputValue">
       <button v-on:click='handleBtn'>提交</button>
       <ul>
           <todo-item v-for="(item,index) in list" :key="index" v-bind:content='item' v-bind:index="index"
               @delete="handleItemDelete"></todo-item>
       </ul>
   </div>
   <script>
       // 全局组件
       // Vue.component("TodoItem", {
       //     props: [
       //         'content'
       //     ],
       //     template: "<li>{{content}}</li>"
       // })

       // 局部组件(需要注册到根Vue实例里)
       var TodoItem = {
           props: [
               'content', 'index'
           ],
           template: "<li v-on:click='handleItemDel'>{{content}}</li>",
           methods: {
               //点击子组件时,会向外触发一个delete事件
               handleItemDel() {
                   this.$emit('delete', this.index)
               }
           }
       }

       // 父组件
       var app = new Vue({
           el: '#app',
           // 注册局部组件
           components: {
               TodoItem
           },
           data: {
               list: [],
               inputValue: ''
           },

           methods: {
               handleBtn() {
                   console.log(app.$data.inputValue);
                   console.log(this.inputValue);
                   this.list.push(app.$data.inputValue)
                   this.inputValue = ''
               },
               handleItemDelete(index) {
                   console.log(index);
                   this.list.splice(index, 1)
               }
           },
       })
   </script>
</body>

</html>

5.单向数据传递

相关文章

  • #搭建Vue+TypeScript项目(五)

    vue组件 组件中使用typescript 主文件 父子组件传递数据 子文件lefebar

  • 到了Vue2.x有哪些变化?—— 组件通信

    一、父子组件传递数据 默认情况下父子组件的数据是不共享地 推荐一个Vue辅助工具 —— vue-devtool下载...

  • vue学习

    vue中的事件传递 父子组件传值通过props传递,父组件 :name=“name(父数据)”子组件 props内...

  • Vue的组件通信

    Vue的父子通信问题 参考文档 : Vue 组件组合 使用 props传递数据 用v-on 绑定事件 原理: 父子...

  • Vue中组件间传值总结 ------ 2020-05-17

    父子组件间传递数据的方式 1、父组件向子组件传递数据 2、子组件向父组件传递数据 3、父子组件相互传递同一数据的两...

  • Vue如何实现组件通信?

    Vue组件通信的三种情况: 父子通信 爷孙通信 兄弟通信 父子通信:父组件使用Prop向子组件传递数据,子组件通过...

  • vue组件如何通信?有几种方式?

    在vue中组件通讯可以分为父子组件通讯和非父子组件通信。父组件通过props的方式向子组件传递数据,而子组件可以通...

  • Vue组件传值及页面缓存问题

    一、父子组件传值 基本概念在Vue中,父子组件间的数据流向可以总结为prop向下传递,事件向上传递,即父组件通过p...

  • vue 事件总线EventBus的概念、使用以及注意点

    vue组件中的数据传递最最常见的就是父子组件之间的传递。父传子通过props向下传递数据给子组件;子传父通过$em...

  • vue组件传参

    父子组件通信 1、父组件给子组件传递数据,请查看下面这篇文章vue中的prop2、子组件给父组件传递数据(一般不推...

网友评论

      本文标题:Vue 父子组件的数据传递(一)

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