【问题标题】:VueJS 2: Modify select options by other select elementsVueJS 2:通过其他选择元素修改选择选项
【发布时间】:2017-02-21 21:19:28
【问题描述】:

我的模板中有四个select 元素。每个后续元素的选项都应该根据前面的选择而改变。例如,如果您从“汽车”select 中选择“丰田”,则下一个应该只显示丰田车型。我尝试设置它,但 AJAX 请求永远重复调用。这种形式的最佳模式是什么?

这是我在模板中的示例:

<select v-model="selected.car" :change="getModels()">
    <option v-for="car in cars" value="car.id">{{ car.name }}</option>
</select>

<select v-model="selected.model" :change="getYear()">
    <option v-for="model in models" :value="model.id">{{ model.name }}</option>
</select>

...

和javascript:

methods: {

   getModels() {
       axios.get('/api/models/'+this.selected.car).then(resp => {
           this.models = resp.data;
   }

  ...    
}

那么这里最好的模式是什么?

【问题讨论】:

  • "AJAX 请求永远重复调用。" - 不确定是否与回答问题相关,但您能否明确添加这意味着什么?
  • 是的,当我在第一个选择元素上进行选择时,ajax 调用会无限重复。

标签: javascript vuejs2


【解决方案1】:

根据您拥有的数据量,您可以直接加载所有模型,然后根据之前的选择对它们进行排序。这样,您不必处理 Ajax 和更改事件,您只需根据您的模型过滤列表即可。

您还可以使用另一种处理索引的方法,因为您提供的每个条目都有数据。我为此构建了一个演示。

Step 1: Create multiple <select>-elements
Step 2: Have lists of manufacturers, models, equipment for every possible index
Step 3: Based on the selected previous index, which you map to a model, iterate over the respective list, also enable the <select>-element

演示:http://codepen.io/NikxDa/pen/EZqJpP

享受吧。

【讨论】:

  • 这很酷。但是您最终将如何返回所选项目的所有 ID?现在,我只有钥匙。
  • 如果它解决了您的问题,请考虑给它投票。我不完全明白您所说的“返回所有 ID”是什么意思 - 您能进一步详细说明吗?
猜你喜欢
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 2017-11-28
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多