本篇介绍DOM结构与组件的数据流动,以及组件之间的数据流动。
分为三类,DOM传递给组件,子组件到父组件,父组件到子组件。
DOM结构与组件之间:
假定input输入框,当用户输入值userInputValue时,它的数据流动如下:
第一步,它会传递给input输入框的value属性。
第二步,input输入框的value属性绑定到组件的prop属性,将值传递给prop属性。
父组件到子组件:
假设父组件中使用子组件el-input组件,并希望控制用户输入的最大长度。它通过在父组件中定义max_input_length属性,并传递给el-input组件的maxlength。
它的过程如下:
第一步,在子组件中通过props定义属性,上述示例为maxlength。
第二步,在父组件中的data中添加自定义属性,上述示例为max_input_length。
第三步,绑定,在el-input组件中使用v-bind:maxlength = max_input_length。
子组件到父组件:
假设子组件想给父组件传递值,这种情况通常发生在整体---局部的关系中,即子组件作为父组件的组成部分。
例如编写父组件需要填写两个表单。父组件将其拆分为两个子组件,每个子组件对应一个表单。表单收集到数据之后,传递给父组件,调用父组件的save方法。
它的原理是子组件发布事件,父组件监听事件。数据通过事件参数传递。
它的过程如下
第一步,在子组件中发布事件,执行this.$emit(‘event_name’, params),event_name为事件名称,params为传递的数据。
第二步, 在父组件中监听事件,@event_name=’parentMethod(params)’。其中parentMethod是在父组件中定义的任意方法。此时父组件获取到子组件传递的params参数。