javascript - VueJS如何更新选择数据

标签 javascript vue.js vuejs2

在 VueJS 2.0 中,我想在选择更改时使用 v-for 指令更新项目的呈现。

html:

<main>
 {{ testvalue }}
  <select v-model="selected.name">
    <option v-for="foo in foobar">{{foo.name}}</option>
  </select>
  <span>Selected: {{ selected.name }}</span>
  <div v-for="(value, key) in selected.properties">
    <p>{{ key }} {{ value }}</p>
  </div>
</main>

app.js

new Vue({
    el: 'main',
    data: {
        foobar: [
      { name: 'rex', type: 'dog', properties: [{color: 'red', sound: 'load'}] },
      { name: 'tike', type: 'cat', properties: [{color: 'brown', sound: 'quiet'}] }, 
      { name: 'tiny', type, 'mouse', properties: [{color: 'white', sound: 'quiet'}]}
      ],
      selected: { name: 'tiny', type, 'mouse', properties: [{color: 'white', sound: 'quiet'}]},
      testvalue: 'Test'
    },
    created: function () {
        this.selected = this.foobar[0];
    },
    mounted: function () {
        this.selected = this.foobar[1];
    }
})

jsfiddle在这里:https://jsfiddle.net/doritonimo/u1n8x97e/

当选定对象从更改中获取数据时,v-for 指令不会更新。当 Vue 中的数据发生变化时,有没有办法告诉 v-for 循环进行更新?

最佳答案

你的 fiddle 仍然包含一些拼写错误,所以它不起作用。

请检查:https://jsfiddle.net/u1n8x97e/39/

您不需要存储整个选定的对象。您可以只保留索引。

<select v-model="selected">
  <option v-for="(foo, i) in foobar" :value="i">{{foo.name}}</option>
</select>

现在selected只是一个数字:

selected: 0

然后您可以通过foobar[selected]访问所选对象

关于javascript - VueJS如何更新选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42870285/

相关文章:

javascript - 第二个 AJAX 调用不起作用

javascript - NgOnChanges 在用户键入时覆盖表单控件值

javascript - AngularJS 的 ngSanitize 应该修复标签吗?

vue.js - 如何通过在 Vue 中单击以编程方式触发可拖动的 "move"事件?

javascript - 在 nuxt.js 上为 vuetify app v2.0 添加暗模式切换

laravel - Vue 一个还是多个实例?

javascript - 子组件是否应该有权访问商店?

javascript - jquery 获取选中复选框的索引

vue.js - 如何在 vee 验证 3.0 版本中验证十进制值

vue.js - vue 在表格中使用 elementUI <el-popover>