如果我从select
元素中删除background-green
类绑定或value
绑定,那么它就像普通的下拉列表一样工作。但是假设我没有删除background-green
类绑定,那么在选择之后,选择的选项不会显示,但是如果我再次选择相同的选择选项或其他选项,则会显示它。与value
绑定的行为相同。为什么第二次还能用?这是我真正的担心/困惑。
下面是用简单代码运行示例的链接
问题是,:value=“DefaultValue”
实际上没有更改(因为DefaultValue
从未更改),而且第一次发生重播的副作用。
由于:value
本质上总是“”
,因此每当重新呈现时,Vue都会将值设置为空字符串。
您有handleinput
设置fillbg=true
,它触发重新呈现,因为background-green
不在初始呈现中。这意味着Vue将把的值重置回
defaultvalue
(空白)
在第一次选择之后它看起来工作的时间内,实际发生的是DOM本地状态显示您选择的内容。由于vdom没有变化(背景-绿色已经存在),Vue不会重新呈现,因此不会重置值。
解决此问题的正确方法是在输入事件期间更新defaultvalue
(可能重命名),或者使用v-model
。关键是让Vue在任何时候都设置正确的值。
handleInput(e) {
this.fillBg = true;
this.defaultValue = e.target.value;
},