【发布时间】:2018-07-12 12:21:00
【问题描述】:
我是 Vue 的新手,正在尝试构建一个“下拉”组件。我想从这样的父组件中使用它:
<my-dropdown v-model="selection"></my-dropdown>
其中selection 在父级上存储为data,应更新以反映用户的选择。为此,我相信我的下拉组件需要一个 value 属性,并且它需要在选择更改时发出 input 事件。
但是,我还想从子本身内部修改value,因为我希望能够自己使用下拉组件(我需要修改它,否则 UI 将不会更新以反映如果组件单独使用,则新选择的值)。
有没有一种方法可以像上面那样与v-model 绑定,但也可以从孩子内部修改值(似乎我不能,因为value 是一个道具,孩子不能修改自己的道具)。
【问题讨论】:
-
无论如何你都不能修改 prop,但是你可以在组件内部设置一个镜像数据,并在没有
v-model传递给它的情况下使用该数据更新 UI。跨度> -
@wxsm 我应该如何镜像它?我遇到的问题是父更改选择>子检测道具更改并更新数据>子发出事件,因为数据更改>父检测事件并更新选择并且循环无限重复。
-
@btl 我不太确定这对我有什么帮助,因为在那个例子中,状态似乎只存在于父母身上。