【问题标题】:Getting item properties from a dropdown in Vue.Js从 Vue.Js 的下拉列表中获取项目属性
【发布时间】:2019-05-29 00:55:56
【问题描述】:

我正在努力从下拉框中选择的项目中输出其中一个对象属性 (SKU)。我尝试了一些变体,但都没有成功。

如果我不在下拉列表中显示它(使用表达式),我如何访问其中一个对象属性。本质上,我如何在下拉列表之外显示商品的 SKU?

<select v-model="selected">
<option v-for="option in options" v-bind:value="option.value">
    {{ option.text }}
</option>
</select>
<span>Selected: {{ selected }}</span>
<p>The SKU of your selected item is {{ selected.sku }}</p>

new Vue({
el: '...',
data: {
    selected: 'A',
    options: [
    { text: 'One', value: 'A', sku:'TT5' },
    { text: 'Two', value: 'B', sku:'BB8' },
    { text: 'Three', value: 'C', sku:'AA9' }
    ]
}
})

【问题讨论】:

  • 您想显示sku 属性而不能吗?
  • 是的,我需要在下拉列表中向客户显示 text 属性,并在 span 中显示摘要。另外,将“option.value”留在 v-bind 中,以便将其传递给我的后端。但我也想在选择框外的段落中向客户显示 SKU。
  • 值是唯一的?
  • 我通过添加一些适合您的用例的细节来编辑我的答案

标签: javascript html vue.js vuejs2 vue-component


【解决方案1】:

尝试将整个对象绑定到您的option 元素,如下所示:

<option v-for="option in options" v-bind:value="option">

通过这种方式,您可以访问其属性,例如:

  <span>Selected: {{ selected.value }}</span>
  <p>The SKU of your selected item is {{ selected.sku }}</p>

由于您需要将 value 属性传递给后端,因此您可以使用计算属性来根据选定的值获取选定的对象:

Vue.config.devtools = false;
Vue.config.productionTip = false;

new Vue({
  el: '#app',
  data: {
    selectedVal: 'A',

    options: [{
        text: 'One',
        value: 'A',
        sku: 'TT5'
      },
      {
        text: 'Two',
        value: 'B',
        sku: 'BB8'
      },
      {
        text: 'Three',
        value: 'C',
        sku: 'AA9'
      }
    ]
  },
  computed: {
    selected() {

      return this.options.find(op => {
        return op.value == this.selectedVal
      })
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div id="app">
  <select v-model="selectedVal">
    <option v-for="option in options" v-bind:value="option.value">
      {{ option.text }}
    </option>
  </select>
  <br/>
  <span>Selected: {{ selected }}</span>
  <p>The SKU of your selected item is {{ selected.sku }}</p>

</div>

【讨论】:

  • 你比我快 :) 我正在研究一个使用相同解决方案的小提琴:jsfiddle.net/vwszfyd7
  • 这看起来不错,我正在尝试将此代码调整为我的个人项目,但它会中断。你能帮忙让这个小提琴工作吗?同时将 v-bind:value="item.id" 留在原地 jsfiddle.net/2k7m3h8a - 一旦我尝试访问任何对象属性(lastprice.sku),它就会中断......
  • 您应该为products 属性提供一个默认值,例如products:'A'
猜你喜欢
  • 2021-02-22
  • 2021-08-21
  • 2014-02-07
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 2023-03-29
相关资源
最近更新 更多