【发布时间】:2019-03-14 17:45:06
【问题描述】:
我在某些类型的 html 元素上初始化 Vue 时遇到问题,请查看以下代码:
new Vue({
el: '#app',
data: {
test: ''
}
})
<script src="https://unpkg.com/vue"></script>
<div id="app">
Without Vue:
<!-- Non-Vue select defaults to selected value -->
<select>
<option>1</option>
<option selected>2</option>
<option>3</option>
</select>
<br />
<br />
With Vue:
<!-- Vue enabled list loses selection -->
<select v-model="test">
<option>1</option>
<option selected>2</option>
<option>3</option>
</select>
</div>
当我启动 Vue 时,您声明 v-Modal 的任何“选择”似乎都失去了它们的选择值。这如the documentation 中所述:
v-model 将忽略初始值、选中或选中的属性 在任何表单元素上都可以找到。它将始终处理 Vue 实例数据 作为真理的来源。您应该在 JavaScript 端,在组件的 data 选项中。
现在我可以做到这一点,但是对于每个选择,我现在需要在 Vue 之外编写一些 JS 来填充/重新填充选择的默认值(通过填充“数据”属性,或者重新选择之前选择的值发布 Vue减速)。
有没有更简单的方法来做到这一点?也许我可以将某种选项或标签提供给 Vue 以“持久”从 HTML 控件的初始状态继承的值?
【问题讨论】:
-
为什么不为 data 属性 = test 分配一个与
test: 2等选项之一相同的默认值? -
是的,我做过类似
var XXX = $('#XXX').val(); ... vueObject.data = XXX之类的事情,但基本上是一样的,是的,您的方法可能比我使用的更hacky 的解决方法更好。我知道有办法绕过这种行为,我只是想要一些更简单的东西。带有许多下拉菜单的大型用户表单变得非常乏味......
标签: javascript html vuejs2 html-select v-model