在行Vue.js中动态添加或删除输入

时间:2020-02-09 16:10:33

标签: javascript vue.js

我正在尝试单击“插入新课程”时动态添加和删除行,以及单击“在行中插入另一所大学”时添加和删除输入。我可以添加和删除行,但是当我单击“插入另一所大学”时,我无法在1行之前添加行。我正在使用vuejs。

我的代码是:

<template>

  <div class="container">

    <div class="card">

      <div class="card-header text-center"> FORM</div>

      <div class="card-body">

        <div class="col-md-12">

          <form v-on:submit.prevent="onSubmit">

            <div class="container-fixed border border-dark" style="padding-top:10px">

             <div class="form-group row mt-5" v-for="(row,k) in rows" :key="k"> //ROWS

                 <label class="col-sm-4 col-lg-1 mt-3 col-form-label font-weight-bold ">Course:</label>

                 <div class="col-xs-8 col-sm-6 col-lg-3 mt-3 border border-dark" >

                     <div class="row"><!--v-for="(course,k) in courses" :key="k"-->

                     <input  type="text"  class="form-control border-primary" v-model="rows.courses" required>

                     <div class="col">

                         <div class="row">

                     <a href="#" @click="removeCourse(k)" v-show="k || (!k && rows.length > 1)" style="color:red" >Remove course</a> //onClick remove row

                     <a href="#" @click="addCourse(k)" v-show="k == rows.length-1" style="color:#152266">Insert another course</a> //onClick add row

                         </div>

                     </div>

                 </div>

             </div>

             <label class="col-sm-4 col-lg-1 mt-3 col-form-label font-weight-bold ">Universities:</label>

             <div class="col-xs-8 col-sm-6 col-lg-4 mt-3 border border-dark" >

                     <div class="row" v-for="(university,u) in row.universities" :key="u">

                     <input  type="text"  class="form-control border-primary" v-model="university.name" required>

                     <div class="col">

                         <div class="row">

                             <a href="#" @click="removeUniversity(u)" v-show="u || (!u && row.universities.length > 1)" style="color:red">Remove University</a> //onClick remove input

                             <a href="#" @click="addUniversity(u)" v-show="u == row.universities.length - 1" style="color:#152266"> Insert another University</a> //onClick add input 

                             </div>

                             </div>

                 </div>

             </div>

             <label class="col-sm-4 col-lg-1 mt-3 col-form-label font-weight-bold ">Choose Faculty:</label>

             <div class="col-xs-8 col-sm-6 col-lg-3 mt-3 border border-dark">

                 <Multiselect v-model="rows.selecprof" :multiple="true" :options="professors"></Multiselect>

                 </div>

             </div>

            </div>

          </form>

        </div>

      </div>

    </div>

  </div>

</template>

<script>
import Multiselect from 'vue-multiselect';

export default {

  name: "form",

  props: ["app"],

  components: {
Multiselect

  },

  data() {

    return {
rows:[{

      courses:'',

      universities:[

          {

              name:'',

          }

      ]

      ,

      selecprof:null,

      }

    ],

      professors:[']
    };

  },

  methods: {

    addUniversity(index){

        this.rows[index].universities.push({name:''})

    },

    removeUniversity(index){

        this.rows[index].universities.splice(index,1);

    },  

    addCourse(index){

        this.rows.push({courses:"",universities:{name:''},selecprof:''});

        console.log(this.rows[1].universities);

    },

    removeCourse(index){

        this.rows.splice(index,2);

    },



    },



  }

};

</script>

图片: 我想做下面的事情,但是它不能正常工作。 screenshot

0 个答案:

没有答案