#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/> , после прочтения документации. Рад быть полезным и рад, что это сработало 😉