Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@akari_0618

Vue.js~イベント処理~

概要

フォームの入力の読み取り、送信するまでのプログラムについての記事です。
v-on,v-modelについて主に取り上げています。

イベント発生

今回のフォームの実装では、ユーザーが入力して送信ボタンを押すのがイベント発生となります。
イベントを設定します。

HTML

index.html
<form @submit.prevent ="addItem">
  <input type="text" v-model="newItem">
   <input type="submit" value="add">
 </form>

イベントはsubmitです。
イベント処理を実装するのはv-onです。(上記では@sbmit)となっています。

更に今回のイベントは、ユーザーからの入力内容を受け取り反映したいので、input type="text"から値を受け取ります。

v-model

v-model="データオブジェクトプロパティ"

v-on

v-on="...." (@イベント名="")

sbmitされたときのメソッドを指定します。今回は、addItemです。
更に今回はボタンタグにsubmitを使用しています。それにより、ページ変移が起きてしまうのでpreventDefaultメソッドを使用します。

index.html
@submit.prevent

と記述します。

Vue

つづいて、Vueの実装内容です。

index.js
data:{
  newItem:'',
  lists:[
    'list1',
    'list2',
    'list3'
   ]
},

双方向データバインディング

先程、v-modelで指定したプロパティはnewItemです。
現在こちらのプロパティは空に設定しています。こちらに文字列を入れてみました。
すると、テキストボックスに初期値が反映されていました。
これは、双方向データバインディングといいます。Vue.jsのフォーム開発で大切になります。
データオブジェクトからテキストボックスの反映はもちろん。テキストボックスからの反映も可能にします。(データオブジェクトとテンプレート状態を同期する)

ちなみに、v-modelを利用した場合はテキストボックスでHTMLから指定されたValue属性は無効になります。

index.js
methods:{
 addItem: function() {
   this.lists.push(this.newItem);
   this.newItem = '';
  }
}

次に送信されたときの処理についてです。methodsというキーでイベントオブジェクトを作ります。
先程のHTMLで指定したaddItemで処理を書いていきます。
今回の処理内容は、submitしたときにlistsという配列にプッシュします。
data内のlistにはthisでアクセスすることが出来ます。this.lists.pushとすることで追加することが出来ます。何をプッシュするのかv-modelで取得したプロパティですね。
値を送信した後に値がテキストボックスからなくなるようにthis.newItem = ''空文字にします。

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
akari_0618
最近駆け出したエンジニアなーすです。 初心者のための初心者による初心者に関しての技術ブログになってます。 Twitter(@pro_ai_01)フォローするとモチベが上がり、インスタ(pro_ai)フォローするとこれまたモチベ上がります。Qiitaフォローするとまたモチベも上がり理解も深まります。 人生もプログラミングも一石三鳥ぐらいでいい感じに行きましょ😎

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?