Vue.js的组件(四)父组件与子组件的数据联系 之 双向绑定
2017-03-22 18:42
1051 查看
之前有说到,父组件传数据到子组件是通过组件的属性
但是子可以通过自定义事件来让自己的数据影响到父。
只要把这两种方法结合起来,就可以实现父与子数据的双向绑定。
梳理一下程序运行的流程。
1、子组件通过
2、在updateValue方法里,定义一个自定义事件,并将获取的参数暴露给父模板。
3、父模板在前端(html)中使用
4、
5、父组件的值的改变导致子组件的属性props的变化。
6、从而改变了子组件的值。因为子组件通过props绑定了该值。
props来实现的,这是一种单向绑定。父可以影响子,子不能影响父。
但是子可以通过自定义事件来让自己的数据影响到父。
只要把这两种方法结合起来,就可以实现父与子数据的双向绑定。
//js /*为了方便理解过程,把v-model拆分成v-bind,和v-on:input="$event.target.value"*/ Vue.component('my-input',{ props['myprops'], template:'<input v-bind:value="myprops" v-on:input="updateValue($event.target.value)">', methods:{ updateValue":function(value){ var myValue = value; //将输入的文本框内容传来 this.$emit('shijian',myValue); //自定义事件,并传参 } } }) var app5 = new Vue({ el:'#app5', data:{ message:'' }, method:{ fatherValue:function(myValue){ this.message = myValue; } } })
//html <div id="app5"> //实时显示message的值 <p>{{message}}</p> //传统的双向绑定 <input v-model="message"> //父组件与子组件的双向绑定 <my-input v-bind:value="message" v-on:shijian="fatherValue"></my-input> </div>
梳理一下程序运行的流程。
1、子组件通过
v-on:input="updateValue($event.target.value)"触发input事件,获取输入的值,作为参数传给子模板的方法updateValue.
2、在updateValue方法里,定义一个自定义事件,并将获取的参数暴露给父模板。
3、父模板在前端(html)中使用
v-on:shijian="fatherValue"捕获子组件提供的参数和自定义事件。并指向一个方法
fatherValue.
4、
fatherValue方法使用了来自子组件的参数,并赋给了父组件的变量。从而改变了父组件变量的值。
5、父组件的值的改变导致子组件的属性props的变化。
6、从而改变了子组件的值。因为子组件通过props绑定了该值。
相关文章推荐
- vue.js组件之间通讯的数据双向绑定----父亲把数据传递给儿子,儿子更改数据后,重新发送给父亲,父亲数据更改后,属性会重新发送个儿子,儿子刷新新数据
- vue.js数据绑定的方法(单向、双向和一次性绑定)
- vue.js v-model数据双向绑定实例
- vue.js双向数据绑定实现原理
- Vue.js双向数据绑定原理
- Vue.js--基于$.ajax获取数据并与组件的data绑定
- 【VUE】使用Table组件进行数据双向绑定
- Vue.js每天必学之数据双向绑定
- Vue.js双向数据绑定模板渲染
- Vue.js学习 Item4 -- 数据双向绑定
- vue2.0数据双向绑定与表单bootstrap+vue组件
- Vue.js第一天学习笔记(数据的双向绑定、常用指令)
- Vue.js双向数据绑定实现
- Vue.js的组件(三)父组件与子组件的数据联系 之 子传父 之 自定义事件
- Vue.js组件—父组件与子组件之间的数据联系
- vue.js基础-处理用户输入与双向数据绑定
- [Vue.js启航]——数据的双向绑定
- 【VUE】.NET实现Tree组件双向绑定数据(3)-资源分配
- vue.js双向数据绑定
- 【VUE】.NET实现Tree组件双向绑定数据(1)