1

How to change the label in bootstrap-vue in an input group? I am ok with the input field, the issue I have is trying to change the label to different labels?

<template>
  <b-modal id="Transfer" centered title="Transfer">
    <b-container fluid>
      <b-row class="my-1" v-for="type in types" :key="type">
        <b-col sm="3">
          <label :for="`type-${type}`">Type <code>{{ type }}</code>:</label>
        </b-col>
        <b-col sm="9">
          <b-form-input :id="`type-${type}`" :type="type"></b-form-input>
        </b-col>
      </b-row>
    </b-container>
  </b-modal>
</template>
data: () => ({
  labels: [].concat('test', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7', 'test8', 'time', 'range', 'color'),
  types: [].concat('text', 'number', 'email', 'password', 'search', 'url', 'tel', 'date', 'time', 'range', 'color')
})

1 Answer 1

2

Define your field data in one object (or array), then you can easily access all the data in the v-for. This way allows you to also store the models for the data itself which would have to be a 3rd array otherwise:

new Vue({
  el: "#app",
  data: () => ({
    fields: {
      test: { type: 'text', model: '' },
      test2: { type: 'number', model: '' },
      test3: { type: 'email', model: '' },
      test4: { type: 'password', model: '' },
      test5: { type: 'search', model: '' },
      test6: { type: 'url', model: '' },
      test7: { type: 'tel', model: '' },
      test8: { type: 'date', model: '' },
      test9: { type: 'time', model: '' },
      test10: { type: 'range', model: '' },
      test11: { type: 'color', model: '' }
    }
  }) 
});

An object is slightly easier to look up a field by name later, for example, when doing validation.

Then in your v-for you can access the type on field.type and the label as the loop index. And give each input a v-model="field.model":

<b-modal id="Transfer" centered title="Transfer">
  <b-container fluid>
    <b-row class="my-1" v-for="(field, label) in fields" :key="label">
      <b-col sm="3">
        <label :for="`type-${field.type}`">Type <code>{{ field.type }}</code> {{ label }}:</label>
      </b-col>
      <b-col sm="9">
        <b-form-input :id="`type-${field.type}`" v-model="field.model" :type="field.type"></b-form-input>
      </b-col>
    </b-row>
  </b-container>
</b-modal>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.