简体   繁体   English

Vue js 使用 v-for 在 select 中显示选项

[英]Vue js showing options in select using v-for

I made Todo Application, and will use v-for loop to show priorityTypes as select options.我制作了 Todo 应用程序,并将使用 v-for 循环将 priorityTypes 显示为 select 选项。 Unfortunately, Low,medium,high options is not shown.不幸的是,没有显示低、中、高选项。 How can I make Low,medium,high options showing in select?如何在 select 中显示低、中、高选项?

<template>
  <div class="addNewArea">
    <div class="inputArea">
      <div>
        <label for="titleInput">Title</label>
        <input type="text" id="titleInput" />
      </div>
      <div>
        <label for="priorityType">Priority</label>
        <select v-model="priority" id="priorityType">
          <option
            v-for="{ priorityType, idx } in priorityTypes"
            :key="idx"
            :value="priorityType.priorityType"
          >
            {{ priorityType.value }}
          </option>
        </select>
      </div>
      <div class="htmlWrapper">
        <button>Confirm</button>
      </div>
    </div>
  </div>
</template>

<script>
const priorityTypes = [
  { priorityType: 1, value: 'Low' },
  { priorityType: 2, value: 'Medium' },
  { priorityType: 3, value: 'high' },
];
export default {
  data() {
    return {
      priorityTypes: priorityTypes,
      priority: 1,
    };
  },
  method: {},
};
</script>

when i change to当我更改为

            <option
            v-for="{ priority, idx } in priorityTypes"
            :key="idx"
            :value="priority.priorityType"
          >
            {{ priority.value }}
          </option>

this showing error.这显示错误。 [Vue warn]: Error in render: "TypeError: Cannot read properties of undefined (reading 'priorityType')" [Vue 警告]:渲染错误:“TypeError:无法读取未定义的属性(正在读取'priorityType')”

for v-for v-for="(priorityType, idx) in priorityTypes" this might solves your problem.对于 v-for v-for="(priorityType, idx) in priorityTypes"这可能会解决您的问题。

As Robin mentioned in his answer - Syntax for v-for is not correct.正如 Robin 在他的回答中提到的那样 - v-for 的语法不正确。 Use (priorityType, idx) instead of {priorityType, idx} .使用(priorityType, idx)代替{priorityType, idx}

Working Demo:工作演示:

 new Vue({ el: '#app', data: { priorityTypes: [ { priorityType: 1, value: 'Low' }, { priorityType: 2, value: 'Medium' }, { priorityType: 3, value: 'high' }, ], priority: 1, } })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <div class="addNewArea"> <div class="inputArea"> <div> <label for="titleInput">Title</label> <input type="text" id="titleInput" /> </div> <div> <label for="priorityType">Priority</label> <select v-model="priority" id="priorityType"> <option v-for="(priorityObj, idx) in priorityTypes":key="idx":value="priorityObj.priorityType" > {{ priorityObj.value }} </option> </select> </div> <div class="htmlWrapper"> <button>Confirm</button> </div> </div> </div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM