gpt4 book ai didi

javascript - VueJS - 如何取消设置绑定(bind)到使用 v-if 隐藏的元素的数据属性?

转载 作者:行者123 更新时间:2023-12-02 22:22:44 26 4
gpt4 key购买 nike

当这些属性绑定(bind)到用 v-if 隐藏的 DOM 元素时,我需要一些帮助来销毁/取消设置 VueJS 中的某些数据属性。

我有一个真实的场景,但是,出于本文的目的,我将坚持使用一个简单的示例。

在我的 HTML 中,我有以下内容:

<html><body>
<div id="app">
<select v-model="myFields.SelectedValue">
<option disabled value="">Choose a Programming language</option>
<option>PHP</option>
<option>Python</option>
<option>C#</option>
</select>

<input v-if="myFields.SelectedValue == 'PHP'" type="text" label="Your favorite version of PHP" v-model="myFields.favPHP">

<br>
<pre>
{{myFields}}
</pre>

</div>
</body>
</html>

在 JavaScript 上,我得到了这个:

new Vue({
el: "#app",
data: {
myFields:{
SelectedValue: ''
}
}
})

当我在选择字段中选择选项“PHP”时,VueJS 将按预期呈现输入字段。然后我可以输入任何内容,该值将绑定(bind)到属性 myFields.favPHP。问题是:如果我决定更改选择字段中的选项,例如“Python”,则文本输入字段将被删除,因为它必须如此,但 myFields.favPHP 不会未设置。我不认为有一种本地方法可以实现这一点,而且我不知道我能做些什么来解决这个问题。

这是一个工作 fiddle :https://jsfiddle.net/bneeer/5jumo3aq/1/

有人吗?

最佳答案

尝试添加一个 v-on:change 事件处理程序来删除不必要的值。

new Vue({
el: "#app",
data: {
myFields: {
SelectedValue: ''
}
}
})
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}

#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}

li {
margin: 8px 0;
}

h2 {
font-weight: bold;
margin-bottom: 15px;
}

del {
color: rgba(0, 0, 0, 0.3);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<select v-model="myFields.SelectedValue" v-on:change='delete myFields.favPHP'>
<option disabled value="">Choose a Programming language</option>
<option>PHP</option>
<option>Python</option>
<option>C#</option>
</select>

<input v-if="myFields.SelectedValue == 'PHP'" type="text" label="Your favorite version of PHP" v-model="myFields.favPHP">

<br>
<pre>
{{myFields}}
</pre>

</div>

关于javascript - VueJS - 如何取消设置绑定(bind)到使用 v-if 隐藏的元素的数据属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59179185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com