разделите данные на отдельные значения и назначьте их в тегах span в Vuejs

#javascript #php #jquery #vue.js #vuejs2

#javascript #php #jquery #vue.js #vuejs2

Вопрос:

Я хочу отделить строку, объединенную запятой, и сохранить ее теги span отдельно, чтобы я мог получить единственное значение. Я работаю в Vuejs с Php и получаю данные из базы данных с помощью Axios. У меня есть product_color значение в базе данных, объединенное запятыми, как это Red,Black, White , и я хочу разделить его так же, как explode() функцию PHP. приведенный ниже код Благодарит и извиняется за плохой английский.

 <div class="card p-5" v-for="(single, index) in singleProduct" :key="single.id">
     <h5 class="colors">colors:
      {{ single.product_color }}
      //getting value like this Red,Black,White
      <span class="color orange not-available" data-toggle="tooltip" title="Not In store"></span>
      <span class="color green"></span>
      <span class="color blue"></span>
      </h5>
</div>


import axios from "axios";
export default {
  name: 'product-detail',
  data (){
    return {
       //data from api
       singleProduct: [],
       product_id: this.$route.params.product_id
    }
  },
  created(){
    this.fetchItem();
  },
  methods: {
    /* eslint-disable no-unused-vars */
        fetchItem(product_id) {
            axios
                .get(`http://localhost/vue/src/Api/api?action=fetchItemamp;product_id=${this.product_id}`)
                .then((res) => {
                    console.log(res);
          this.singleProduct = res.data.product_data;
                })
                .catch((err) => {
                    console.log(err);
                });
        },
  }
}
  

Комментарии:

1. Помогает ли это: как разделить строку в vue.js ?

Ответ №1:

Вы можете использовать метод js split() для вашей строки, чтобы создать массив, подобный php explode() . Поместите это в вычисляемый метод для создания массива, а затем добавьте цикл v-for для вывода ваших промежутков:

 data() {
    //your data attrs
},
computed: {
    productColors() {
        return this.singleProduct.product_color.split(',');
    }
},
  

а затем в вашем шаблоне:

 <span v-for="productColors as color" :class="'color '.color">{{color}}</span> 
  

Комментарии:

1. где я должен поместить эту строку this.colorsArray = colorsString.split(‘,’); извините, я новичок

2. @KashmiriAmmar Извините, это был старый (и плохой) пример. Перезагрузите страницу, и вы увидите код получше.

3. Ошибка типа: не удается прочитать свойство ‘product_color’ неопределенного

4. @KashmiriAmmar Две вещи: я перепутал имя переменной — должно быть return this.singleProduct.product_color …. (от одного до singleProduct, и я обновил приведенный выше пример), и вы должны ждать отображения вашего продукта, пока он не будет загружен. Добавьте проверку длина»> [существующий шаблон] </template>