代码之家  ›  专栏  ›  技术社区  ›  Rashed Hasan Vijayaragavan

在vuejs中使用“v-select”时,如何将“id”值作为选项值,将“cname”作为选项标签?

  •  0
  • Rashed Hasan Vijayaragavan  · 技术社区  · 6 年前

    我在试着 id v-select . 现在,我很难得到 身份证件

    我的 index.html 文件是-

    <!DOCTYPE html>
    <html>
    <head>
    <title>VueJs | Select2</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
    </head>
    <body>
      <div id="pageContent">
        <form method="POST" @submit.prevent="addSection()">
          <div class="form-group">
            <label for="className">Select Class</label>
            <v-select name="className" v-model="className" :options="academicClasses.map(({cname}) => cname)"></v-select>
          </div>
           <div class="form-group">
             <button type="submit" class="btn btn-success save-btn"><i class="fa fa-check"></i> Save</button>
           </div>
        </form>
    </div>
    
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script src="https://unpkg.com/vue-select@latest"></script>
    
    </body>
    </html>
    

    我的vujs脚本是-

    Vue.component('v-select', VueSelect.VueSelect);
    
    var app = new Vue({
      el: '#pageContent',
      data: {
        className: '',
        academicClasses: [],
        academicClasses: [
                {
                id: 1,
              cname: 'One'
            },
                {
                id: 2,
              cname: 'Two'
            },
                {
                id: 3,
              cname: 'Three'
            },
                {
                id: 4,
              cname: 'Four'
            }
        ],
      },
    
      methods: {
        addSection(){
            alert(this.className);
        }
      }
    })
    

    你能进来看看吗 JSFiddle JsFiddle

    2 回复  |  直到 6 年前
        1
  •  1
  •   Ric.H    6 年前

    此处更改:

    <v-select name="className" v-model="className" :options="academicClasses.map(academicClass => ({label: academicClass.cname, value: academicClass.id}))"></v-select>

    alert(this.className.label + ' - ' + this.className.value);

    文档: Dropdown Options

        2
  •  1
  •   Yom T.    6 年前

    您想要传递 options 以下结构中的支柱:

    [{
      label: item.cname,
      value: item.id
    }]
    

    Vue.component('v-select', VueSelect.VueSelect);
    
    var app = new Vue({
      el: '#pageContent',
      
      data() {
        return {
          className: '',
          
          academicClasses: [
            { id: 1, cname: 'One'}, 
            { id: 2, cname: 'Two' }, 
            { id: 3, cname: 'Three' }, 
            { id: 4, cname: 'Four' }
          ],
        }
      },
      
      methods: {
        addSection() {
          alert(this.className);
        }
      },
      
      computed: {
        opts() {
          return this.academicClasses.map(item => ({
            label: item.cname,
            value: item.id
          }));
        }
      },
    
      watch: {
        className(val) {
          console.log(val);
        }
      }
    })
    
    Vue.config.devtools = false;
    Vue.config.productionTip = false;
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
    <script src="https://unpkg.com/vue-select@latest"></script>
    
    <div id="pageContent">
      <form method="POST" @submit.prevent="addSection()">
        <div class="form-group">
          <label for="className">Select Class</label>
          <v-select name="className" v-model="className" :options="opts"></v-select>
        </div>
        <div class="form-group">
          <button type="submit" class="btn btn-success save-btn"><i class="fa fa-check"></i> Save</button>
        </div>
      </form>
    </div>