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

标签 javascript html vue.js data-binding

当这些属性绑定(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/

相关文章:

javascript - 在 Javascript 中从图像中获取名称

javascript - e.touches、e.targetTouches 和 e.changedTouches 的变体

jquery - Vuejs 方法不触发

javascript - 当父数据更改时,VueJS 子组件不会更新

gulp - vueify(在 gulp 任务中)与 vue 文件的 babel 转换

javascript - 当名称和值之间有空格字符时如何获取属性数组?

javascript - 如何在 <td> </td> 中加载以下上下文的 datapicker?

html - 使用绝对页脚重复背景图像

html - 样式不适用于 HTML5 自定义元素

html - 影响文本颜色的透明背景