首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用vue 2连接option HTML元素中的条件块

如何使用vue 2连接option HTML元素中的条件块
EN

Stack Overflow用户
提问于 2018-07-03 04:36:42
回答 2查看 68关注 0票数 1

我是vue新手,在option元素中的条件渲染(v-if)方面有问题。当我有一个空的数组时,我想显示一个禁用的选项,否则它会显示国家。就像这个描述中的https://vuejs.org/v2/guide/conditional.html一样,但不幸的是,这不适用于option HTML元素。我错过了什么?

代码语言:javascript
复制
new Vue({

  el: '#app',

  data: {

    selected: '',

    optionAvailable: true,

    countries: [

                //{ name: 'USA', population: '300M' }, 
                //{ name: 'Canada', population: '100M' }, 
                //{ name: 'Germany', population: '80M' },           

               ]

  },

  created() {

    if(!this.countries.length > 0) {

        return this.optionAvailable = false;

    }

    return true;

  },

  methods: {

    onChange(event) {

        this.selected = event.value;

    }

  }

})

html:

代码语言:javascript
复制
<div id="app">

  <select @change="onChange($event.target)">

    <option v-if="optionAvailable" v-for="(country,index) in countries" :value="country.population">{{ country.name }}</option>

    <option v-else disabled>-</option>

  </select>
  <br>

  <span>{{ selected }}</span>
</div>

这里是jsfiddle:

https://jsfiddle.net/50wL7mdz/434002/

EN

回答 2

Stack Overflow用户

发布于 2018-07-03 05:56:04

试试这个:

模板

代码语言:javascript
复制
<div id="app">
  <select @change="onChange($event.target)">
      <option v-if="countries.length" v-for="(country,index) in countries" :value="country.population">{{ country.name}}</option>
      <option v-else>----</option>
  </select>
  <span>{{ selected }}</span>
</div>

脚本

代码语言:javascript
复制
new Vue({
  el: '#app',
  data: {
    selected: '',
    optionAvailable: true,
    countries: [
            { name: 'USA', population: '300M' }, 
      { name: 'Canada', population: '100M' }, 
      { name: 'Germany', population: '80M' } ]    
    },
  methods: {
    onChange(event) {
        this.selected = event.value;
    }
  }
})

您不需要创建的钩子。您可以告诉v-if直接查看countries的长度。

https://jsfiddle.net/z4mu8L9e/8/

票数 0
EN

Stack Overflow用户

发布于 2018-07-03 14:35:14

试用此模板

代码语言:javascript
复制
    <div id="app">

  <select @change="onChange($event.target)" :disabled="!countries.length">

    <option v-if="!countries.length" value="">No available countries</option>

    <option v-for="(country,index) in countries" :value="country.population">{{ country.name }}</option>

  </select>
  <br>

  <span>{{ selected }}</span>
</div>

脚本

代码语言:javascript
复制
   new Vue({

  el: '#app',

  data: {
    selected: '',
    countries: []              
  },


  methods: {

    onChange(event) {

        this.selected = event.value;

    }

  }

})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51143402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档