Vue 组件间传值

2018-10-22  本文已影响0人  废柴阿W

父子组件间传值

  • 父组件—>子组件:
    1.父组件使用 v-bind 绑定变量并赋值给变量。
    2.在子组件里使用 props 来接收父组件传递过来的值。
  • 子组件—>父组件:
    1.子组件通过$emit()方法向外派发事件,传递参数。
    this.$emit('事件名',传递的参数);
    2.父组件通过监听子组件派发的事件来获得参数。
    监听 @事件名="方法名" 方法名(value){ .... //value=传递来的参数 }
    父组件取到值以后改变数据
 
<div id="root">
    <div>
        <input type="text" v-model="todoValue"/>
        <button @click="handleBtnClick">提交</button>
    </div>
    <ul>
        <todo-item v-bind:content="item"
                   v-bind:index="index"
                   v-for="(item,index) in list"
                   @delete="DeleteItem">

        </todo-item>
    </ul>
</div>

<script>

    var TodoItem = {
        props: ['content' ,"index"],
        template: "<li @click='Clickde'>{{content}}</li>",
        methods:{
            Clickde:function () {
                this.$emit("delete",this.index);
            }
        }
    }

    var app = new Vue({
        el: "#root",
        components: {
            TodoItem: TodoItem
        },
        data: {
            todoValue: "",
            list: []
        },
        methods: {
            handleBtnClick: function() {
                this.list.push(this.todoValue);
                this.todoValue = ""
            },
            DeleteItem:function (index) {
                this.list.splice(index,1);
            }
        }
    })
</script>
  • 父—>子: 父组件v-bind:变量名=“js表达式” 子组件:props获取
    单项数据流: 子组件不能直接修改父组件传递来的参数
**错误示范**

修改Object的值会导致别的引用了该对象的子组件内数据的变化,
用在子组件内复制一份该对象,修改子组件内自己的data来代替


image.png

非父子组件间传值

上一篇下一篇

猜你喜欢

热点阅读