web-dev-qa-db-ja.com

Vue.jsは@changeで選択されたオプションを取得します

まず、私はVueが初めてであり、これがVueを使用した初めてのプロジェクトであると言いたいです。コンボボックスがあり、選択したコンボボックスに基づいて異なることをしたい。別のvue.htmlとTypeScriptファイルを使用します。これが私のコードです。

<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);
}

TypeScript関数で選択したオプション値を取得する方法は?ありがとう。

42
hphp

v-modelを使用して、選択したオプションの値の値をバインドします。 ここに例があります

<select name="LeaveType" @change="onChange($event)" class="form-control" v-model="key">
   <option value="1">Annual Leave/ Off-Day</option>
   <option value="2">On Demand Leave</option>
</select>
<script>
var vm = new Vue({
    data: {
        key: ""
    },
    methods: {
        onChange(event) {
            console.log(event.target.value)
        }
    }
}
</script>

詳細な参照は here から見ることができます。

76
ramwin

@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);
    }
  }
})

Select要素でv-model data属性を使用して、値をバインドできます。

<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);
        }
    }
})

お役に立てれば :-)

18
santanu bera

変更された値は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/[email protected]/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>
15

また、レスキューに v-model を使用することもできます

<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>
2

@ change = "onChange()" an use watchersを保存できます。 Vueは計算および監視するために設計されています。値のみが必要で、他の複雑なイベント属性は必要ない場合。

何かのようなもの:

  ...
  watch: {
    leaveType () {
      this.whateverMethod(this.leaveType)
    }
  },
  methods: {
     onChange() {
         console.log('The new value is: ', this.leaveType)
     }
  }
1
biojazzard