Во-первых, я хочу сказать, что я новичок в Vue, и это мой первый проект, когда-либо использующий Vue. У меня есть поле со списком, и я хочу сделать что-то другое в зависимости от выбранного поля со списком. Я использую отдельный файл vue.html и машинописный текст. Вот мой код.
<select name="LeaveType" @change="onChange()" class="form-control">
<option value="1">Annual Leave/ Off-Day</option>
<option value="2">On Demand Leave</option>
</select>
а вот мой ts файл
onChange(value) {
console.log(value);
}
Как получить значение выбранного параметра в моей функции машинописного текста? Спасибо.
@ - это ярлык для v-on . Используйте @ только тогда, когда вы хотите выполнить некоторые методы Vue. Поскольку вы не выполняете методы Vue, вместо этого вы вызываете функцию javascript, вам необходимо использовать атрибут onchange для вызова функции javascript
<select name="LeaveType" onchange="onChange(this.value)" class="form-control"> <option value="1">Annual Leave/ Off-Day</option> <option value="2">On Demand Leave</option> </select> function onChange(value) { console.log(value); }
Если вы хотите вызвать методы Vue, сделайте это так:
<select name="LeaveType" @change="onChange($event)" class="form-control"> <option value="1">Annual Leave/ Off-Day</option> <option value="2">On Demand Leave</option> </select> new Vue({ ... ... methods:{ onChange:function(event){ console.log(event.target.value); } } })
Вы можете использовать атрибут данных v-модели в элементе select для привязки значения.
<select v-model="selectedValue" name="LeaveType" onchange="onChange(this.value)" class="form-control"> <option value="1">Annual Leave/ Off-Day</option> <option value="2">On Demand Leave</option> </select> new Vue({ data:{ selectedValue : 1, // First option will be selected by default }, ... ... methods:{ onChange:function(event){ console.log(this.selectedValue); } } })
Надеюсь это поможет :-)
источник
Измененное значение будет в
event.target.value
const app = new Vue({ el: "#app", data: function() { return { message: "Vue" } }, methods: { onChange(event) { console.log(event.target.value); } } })
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script> <div id="app"> <select name="LeaveType" @change="onChange" class="form-control"> <option value="1">Annual Leave/ Off-Day</option> <option value="2">On Demand Leave</option> </select> </div>
источник
Вы также можете использовать v-модель для спасения
<template> <select name="LeaveType" v-model="leaveType" @change="onChange()" class="form-control"> <option value="1">Annual Leave/ Off-Day</option> <option value="2">On Demand Leave</option> </select> </template> <script> export default { data() { return { leaveType: '', } }, methods: { onChange() { console.log('The new value is: ', this.leaveType) } } } </script>
источник
Вы можете сохранить @ change = "onChange ()" в качестве наблюдателей. Vue рассчитывает и отслеживает, он предназначен для этого. В случае, если вам нужно только значение, а не другие сложные атрибуты событий.
Что-то типа:
... watch: { leaveType () { this.whateverMethod(this.leaveType) } }, methods: { onChange() { console.log('The new value is: ', this.leaveType) } }
источник