vue2中子组件修改父组件传入的prop,并向父组件$emit一个广播事件

1 、在vue中:

       prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解。

      另外,每次父组件更新时,子组件的所有 prop 都会更新为最新值。这意味着你不应该在子组件内部改变 prop 。如果你这么做了,Vue 会在控制台给出警告。 更多可参考:https://cn.vuejs.org/v2/guide/components.html#Prop

2、但是项目实际的组件设计中,我需要子组件修改父组件prop,并且父组件能够监听到prop的变化,下面就来一步步实现!

(1)举一个实际的例子,例如定义了如下图的一个子组件,可切换筛选,父组件能监听到"筛选项",并且筛选列表

(2)子组件的定义方法

 第一步:定义props,接收父组件的的传入值和全局事件广播(ps:全局事件广播定义在app.vue中)

vue2中子组件修改父组件传入的prop,并向父组件$emit一个广播事件_第1张图片

第二步:定义一个局部参数,接收prop传入值,用于子组件的数据操作

vue2中子组件修改父组件传入的prop,并向父组件$emit一个广播事件_第2张图片

第三步:定义列表的筛选方法,并向父组件广播事件

vue2中子组件修改父组件传入的prop,并向父组件$emit一个广播事件_第3张图片

(3)父组件的定义方法

第一步:实例创建完成(created(){}),接收子组件广播的方法,并且在methods定义一个处理函数(this.handleSelectType),此              处涉及到组件的生命周期,可参考:https://cn.vuejs.org/v2/api/#beforeCreate

vue2中子组件修改父组件传入的prop,并向父组件$emit一个广播事件_第4张图片

第二步: 父组件销毁前,清除事件监听

vue2中子组件修改父组件传入的prop,并向父组件$emit一个广播事件_第5张图片

三步:在methods中定义this.handleSelectType方法

vue2中子组件修改父组件传入的prop,并向父组件$emit一个广播事件_第6张图片

完成上述步骤后,父组件中的this.selectType就可监听到子组件选择的筛选类型了,并作出对应的刷新!!!!!

你可能感兴趣的:(vue)