如何在Select-box中选择特定选项,哪个选项在VUE上具有其值中具有对象?

发布于 2025-02-11 02:28:28 字数 2706 浏览 1 评论 0原文

我有一个带有Select-Boxes的编辑表单。如您所见,第二个选择框具有每个选项在其值中具有对象的选项。 由于它是一个编辑表单,因此我需要知道从第一个选择哪个选项,但AS form.customer在第二个select-box v-model中是一个对象{name:'peter','peter',年龄:20},不可能从第一个作为选定选项显示。 我需要以peter -peter -20进行选择并显示。

Vue.component('editForm', {
  template: `<div>
    <b-form @submit="onSubmit">
      <b-form-group id="input-group-1" label="Food:" label-for="input-1">
        {{ form.food }}
        <b-form-select
          id="input-1"
          v-model="form.food"
          :options="foods"
          required
        ></b-form-select>
      </b-form-group>
      
      <b-form-group id="input-group-2" label="Customer:" label-for="input-2">
        <select
          id="input-2"
          v-model="form.customer"
          class="form-control"
        >
          <option v-for="item in customers">
            {{ item.name }} - {{ item.age }}
          </option>
        </select>
      </b-form-group>

      <b-button type="submit" variant="primary">Submit</b-button>
    </b-form>
  </div>`,
  data() {
    return {
      foods: ['rice', 'carrots', 'bread'],
      customers: [
        { name: 'peter', age: 18 },
        { name: 'peter', age: 20 },
        { name: 'sara', age: 18 }
      ],
      form: {
        food: 'carrots',
        customer: { name: 'peter', age: 20 }
      }
     
    }
  },
  methods: {
    onSubmit(event) {
      event.preventDefault()
      // submit the form
    }
  }
})

new Vue({
  el: "#app",
});
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-vue.css" />

<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/bootstrap-vue.min.js"></script>


<div id="app">
  <edit-form/>
</div>

I have an edit form with select-boxes. The second select-box, as you can see in example, have options which each option has an object in its value.
As it is an edit form I need to know which option is selected from the first but as form.customer in second select-box v-model is an object { name: 'peter', age: 20 }, it is not possible to be shown from the first as selected option.
I need in the form peter - 20 be selected and shown.

Vue.component('editForm', {
  template: `<div>
    <b-form @submit="onSubmit">
      <b-form-group id="input-group-1" label="Food:" label-for="input-1">
        {{ form.food }}
        <b-form-select
          id="input-1"
          v-model="form.food"
          :options="foods"
          required
        ></b-form-select>
      </b-form-group>
      
      <b-form-group id="input-group-2" label="Customer:" label-for="input-2">
        <select
          id="input-2"
          v-model="form.customer"
          class="form-control"
        >
          <option v-for="item in customers">
            {{ item.name }} - {{ item.age }}
          </option>
        </select>
      </b-form-group>

      <b-button type="submit" variant="primary">Submit</b-button>
    </b-form>
  </div>`,
  data() {
    return {
      foods: ['rice', 'carrots', 'bread'],
      customers: [
        { name: 'peter', age: 18 },
        { name: 'peter', age: 20 },
        { name: 'sara', age: 18 }
      ],
      form: {
        food: 'carrots',
        customer: { name: 'peter', age: 20 }
      }
     
    }
  },
  methods: {
    onSubmit(event) {
      event.preventDefault()
      // submit the form
    }
  }
})

new Vue({
  el: "#app",
});
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-vue.css" />

<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/bootstrap-vue.min.js"></script>


<div id="app">
  <edit-form/>
</div>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

青萝楚歌 2025-02-18 02:28:28

我可以看到您正在使用BootstrapVue,因此您可以使用B形式选择和B形式选择组件来实现您的目标。

Vue.component('editForm', {
  template: `<div>
    <b-form @submit="onSubmit">
      <b-form-group id="input-group-1" label="Food:" label-for="input-1">
        {{ form.food }}
        <b-form-select
          id="input-1"
          v-model="form.food"
          :options="foods"
          required
        ></b-form-select>
      </b-form-group>
      
      <b-form-group id="input-group-2" label="Customer:" label-for="input-2">
        <b-form-select v-model="form.customer" required>
          <b-form-select-option v-for="item in customers" :value="item">
            {{ item.name }} - {{ item.age }}
          </b-form-select-option>
        </b-form-select>
      </b-form-group>

      <b-button type="submit" variant="primary">Submit</b-button>
    </b-form>
  </div>`,
  data() {
    return {
      foods: ['rice', 'carrots', 'bread'],
      customers: [
        { name: 'peter', age: 18 },
        { name: 'peter', age: 20 },
        { name: 'sara', age: 18 }
      ],
      form: {
        food: 'carrots',
        customer: { name: 'peter', age: 18 },
      }
     
    }
  },
  methods: {
    onSubmit(event) {
      event.preventDefault()
      // submit the form
    }
  }
})

new Vue({
  el: "#app",
});
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-vue.css" />

<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/bootstrap-vue.min.js"></script>


<div id="app">
  <edit-form/>
</div>

I can see that you are using BootstrapVue, so you can use b-form-select and b-form-select-option components to achieve your goal.

Vue.component('editForm', {
  template: `<div>
    <b-form @submit="onSubmit">
      <b-form-group id="input-group-1" label="Food:" label-for="input-1">
        {{ form.food }}
        <b-form-select
          id="input-1"
          v-model="form.food"
          :options="foods"
          required
        ></b-form-select>
      </b-form-group>
      
      <b-form-group id="input-group-2" label="Customer:" label-for="input-2">
        <b-form-select v-model="form.customer" required>
          <b-form-select-option v-for="item in customers" :value="item">
            {{ item.name }} - {{ item.age }}
          </b-form-select-option>
        </b-form-select>
      </b-form-group>

      <b-button type="submit" variant="primary">Submit</b-button>
    </b-form>
  </div>`,
  data() {
    return {
      foods: ['rice', 'carrots', 'bread'],
      customers: [
        { name: 'peter', age: 18 },
        { name: 'peter', age: 20 },
        { name: 'sara', age: 18 }
      ],
      form: {
        food: 'carrots',
        customer: { name: 'peter', age: 18 },
      }
     
    }
  },
  methods: {
    onSubmit(event) {
      event.preventDefault()
      // submit the form
    }
  }
})

new Vue({
  el: "#app",
});
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-vue.css" />

<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/bootstrap-vue.min.js"></script>


<div id="app">
  <edit-form/>
</div>

梦行七里 2025-02-18 02:28:28

这样,这是可能的。

Vue.component('editForm', {
  template: `<div>
    <b-form @submit="onSubmit">
      <b-form-group id="input-group-1" label="Food:" label-for="input-1">
        {{ form.food }}
        <b-form-select
          id="input-1"
          v-model="form.food"
          :options="foods"
          required
        ></b-form-select>
      </b-form-group>
      
      <b-form-group id="input-group-2" label="Customer:" label-for="input-2">
        <select
          id="input-2"
          value="form.customer"
          class="form-control"
        >
          <option
            v-for="item in customers"
            value="item"
            :selected="JSON.stringify(item) === JSON.stringify(form.customer)"
          >
            {{ item.name }} - {{item.age}}
          </option>
        </select>
      </b-form-group>

      <b-button type="submit" variant="primary">Submit</b-button>
    </b-form>
  </div>`,
  data() {
    return {
      foods: ['rice', 'carrots', 'bread'],
      customers: [
        { name: 'peter', age: 18 },
        { name: 'peter', age: 20 },
        { name: 'sara', age: 18 }
      ],
      form: {
        food: 'carrots',
        customer: { name: 'peter', age: 20 }
      }
     
    }
  },
  methods: {
    onSubmit(event) {
      event.preventDefault()
      // submit the form
    }
  }
})

new Vue({
  el: "#app",
});
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-vue.css" />

<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/bootstrap-vue.min.js"></script>


<div id="app">
  <edit-form/>
</div>

In this way It can be possible.

Vue.component('editForm', {
  template: `<div>
    <b-form @submit="onSubmit">
      <b-form-group id="input-group-1" label="Food:" label-for="input-1">
        {{ form.food }}
        <b-form-select
          id="input-1"
          v-model="form.food"
          :options="foods"
          required
        ></b-form-select>
      </b-form-group>
      
      <b-form-group id="input-group-2" label="Customer:" label-for="input-2">
        <select
          id="input-2"
          value="form.customer"
          class="form-control"
        >
          <option
            v-for="item in customers"
            value="item"
            :selected="JSON.stringify(item) === JSON.stringify(form.customer)"
          >
            {{ item.name }} - {{item.age}}
          </option>
        </select>
      </b-form-group>

      <b-button type="submit" variant="primary">Submit</b-button>
    </b-form>
  </div>`,
  data() {
    return {
      foods: ['rice', 'carrots', 'bread'],
      customers: [
        { name: 'peter', age: 18 },
        { name: 'peter', age: 20 },
        { name: 'sara', age: 18 }
      ],
      form: {
        food: 'carrots',
        customer: { name: 'peter', age: 20 }
      }
     
    }
  },
  methods: {
    onSubmit(event) {
      event.preventDefault()
      // submit the form
    }
  }
})

new Vue({
  el: "#app",
});
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-vue.css" />

<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/bootstrap-vue.min.js"></script>


<div id="app">
  <edit-form/>
</div>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文