Как получить значение ионного радио в vue js — ionic

#javascript #vue.js #ionic-framework #ionic4

#javascript #vue.js #ionic-framework #ionic4

Вопрос:

Я использую ionic фреймворк vuejs .

Я создал страницу продукта, но в ней нет никакой формы.

На странице есть переключатель, который содержит размер продукта.

Как я могу получить доступ к выбранному значению переключателя ion-radio , созданного при add to cart нажатии кнопки с этой страницы.

Я новичок vue.js . Обычно я получал значение в jQuery, используя следующий метод:

 $('input[name=radioName]:checked').val()
 

Как я могу получить выбранное значение переключателя vuejs ???

Вот часть html:

 <ion-list v-if="product.size_maps">
  <ion-radio-group>
    <ion-row>
      <ion-col
        v-for="size in product.size_maps"
        :key="size.id"
        size="6"
        id="product_size"
      >
        <ion-item>
          <ion-label class="ion-no-margin">
            {{ size.size.text }}
          </ion-label>
          <ion-radio slot="start" :value="size.size.id"></ion-radio>
        </ion-item>
      </ion-col>
    </ion-row>
  </ion-radio-group>
</ion-list>
 

Я создал метод с именем addToCart :

   methods: {
    addToCart(event) {
      console.log(event);
      // get radio button value here
    }
  }
 

Вот как я вызвал функцию AddToCart в кнопке

 <ion-button
  color="primary"
  fill="solid"
  expand="block"
  size="default"
  v-on:click="addToCart"
>
  Add To Cart
</ion-button>
 

Редактировать:

Я пытался использовать v-model для получения данных. но поскольку нет input доступного тега, я не смог его добавить.

Если я добавил v-model ion-radio тег in, то все переключатели проверяются

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

1. Я не знаю ionic, но обычно в vue2 вы должны привязать свойство data() к v-model ввода, как это делают другие фреймворки . В противном случае вы можете попробовать @ionSelect или аналогичный прослушиватель событий, но это обходной путь, а не правильное решение.

2. @bigless Если я использую v-model в ion-radio , я вижу, что все переключатели проверены: (

3. проверьте ionChange , используя ion-radio-group

4. Разве это не :value="size.size.id" ваша ценность?

5. @AjitPanigrahi это не выбранное значение.

Ответ №1:

Я подумал, что v-model это сработает, только если вы добавите v-model in ion-radio-group , а не in ion-radio .

Вот решение:

добавить v-model в ion-radio-group

 <ion-list v-if="product.size_maps">
  <ion-radio-group v-model="selected_size"> <!-- notice the v-model here -->
    <ion-row>
      <ion-col
        v-for="size in product.size_maps"
        :key="size.id"
        size="6"
        id="product_size"
      >
        <ion-item>
          <ion-label class="ion-no-margin">
            {{ size.size.text }}
          </ion-label>
          <ion-radio slot="start" :value="size.size.id"></ion-radio>
        </ion-item>
      </ion-col>
    </ion-row>
  </ion-radio-group>
</ion-list>
 

затем добавьте selected_size данные :

   data() {
    return {
      ...
      selected_size: 0
    };
  }
 

затем в методе получите доступ к этому selected_size как обычно

   methods: {
    addToCart(event) {
      console.log(event);
      // get radio button value here
      console.log(this.selected_size);
    }
  }
 

Ответ №2:

Я не знаю ionic framework, но я думаю, что вижу вашу проблему. Вам необходимо привязать свое значение <ion-radio slot="start" :value="size.size.id"></ion-radio> к свойству данных следующим образом: <ion-radio slot="start" v-model="size.size.id"></ion-radio> и

   data() {
    return {
      size: {
        size: {
          id: ''
        },
      },
    };
  },
 

Ключевым моментом здесь является наличие начального значения, указанного ionic framework. Я просто добавил пустую строку. Вы также должны установить начальное значение для переключателя следующим образом:

Затем в вашем методе вы можете просто получить доступ к значению:

  methods: {
    addToCart(event) {
      console.log(event);
      // get radio button value here
      console.log(this.size.size.id);
    }
  }
 

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

1. size.size.id находится в цикле. как мне узнать, какой из них выбран?

2. Ну, я подумал, что если вы добавите v-model в ion-radio-group , тогда это сработает. Спасибо за ваши усилия, хотя

3. Я просто хотел снова отредактировать свой ответ, чтобы переместить v-model в <ion-group/> , после прочтения документации. Рад быть полезным и рад, что это сработало 😉