vue.js--事件處理器&表單

vue.js事件處理器

事件監(jiān)聽可以使用v-on指令:

<div id="app">
  <button v-on:click="counter += 1">增加 1</button>
  <p>這個(gè)按鈕被點(diǎn)擊了 {{ counter }} 次踏烙。</p>
</div>
 
<script>
new Vue({
  el: '#app',
  data: {
    counter: 0
  }
})
</script>

通常情況下泪酱,我們需要使用一個(gè)方法來調(diào)用js方法蝎困。v-on可以接受一個(gè)定義的方法來調(diào)用

<div id="app">
   <!-- `greet` 是在下面定義的方法名 -->
  <button v-on:click="greet">Greet</button>
</div>

<script>
var app = new Vue({
  el: '#app',
  data: {
    name: 'Vue.js'
  },
  // 在 `methods` 對(duì)象中定義方法
  methods: {
    greet: function (event) {
      // `this` 在方法里指當(dāng)前 Vue 實(shí)例
      alert('Hello ' + this.name + '!')
      // `event` 是原生 DOM 事件
      if (event) {
          alert(event.target.tagName)
      }
    }
  }
})
// 也可以用 JavaScript 直接調(diào)用方法
app.greet() // -> 'Hello Vue.js!'
</script>

除了直接綁定到一個(gè)方法宪巨,也可以用內(nèi)聯(lián)js語句:

<div id="app">
  <button v-on:click="say('hi')">Say hi</button>
  <button v-on:click="say('what')">Say what</button>
</div>
 
<script>
new Vue({
  el: '#app',
  methods: {
    say: function (message) {
      alert(message)
    }
  }
})
</script>
事件修飾符

vue.js為v-on提供了事件修飾符來處理DOM事件細(xì)節(jié),如:event.preventDefault()
vue.js通過點(diǎn)(.)表示的指令后綴來調(diào)用修飾符:
.stop对竣,.prevent庇楞,.capture榜配,.self否纬,.once

<!-- 阻止單擊事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重載頁(yè)面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修飾符可以串聯(lián)  -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修飾符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件偵聽器時(shí)使用事件捕獲模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只當(dāng)事件在該元素本身(而不是子元素)觸發(fā)時(shí)觸發(fā)回調(diào) -->
<div v-on:click.self="doThat">...</div>

<!-- click 事件只能點(diǎn)擊一次,2.1.4版本新增 -->
<a v-on:click.once="doThis"></a>
按鍵修飾符

vue允許為v-on在監(jiān)聽鍵盤事件時(shí)添加按鍵修飾符:

<!-- 只有在 keyCode 是 13 時(shí)調(diào)用 vm.submit() -->
<input v-on:keyup.13="submit">

記住所有的 keyCode 比較困難蛋褥,所以 Vue 為最常用的按鍵提供了別名:

<!-- 同上 -->
<input v-on:keyup.enter="submit">
<!-- 縮寫語法 -->
<input @keyup.enter="submit">

全部的按鍵別名:
.enter
.tab
.delete (捕獲 "刪除" 和 "退格" 鍵)
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta

<p><!-- Alt + C -->
<input @keyup.alt.67="clear">
<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>

表單

用v-model指令在表單控件元素上創(chuàng)建雙向數(shù)據(jù)綁定



v-model會(huì)根據(jù)空間類型自動(dòng)選取正確的方法來更新元素临燃。

輸入框

<div id="app">
  <p>input 元素:</p>
  <input v-model="message" placeholder="編輯我……">
  <p>消息是: {{ message }}</p>
    
  <p>textarea 元素:</p>
  <p style="white-space: pre">{{ message2 }}</p>
  <textarea v-model="message2" placeholder="多行文本輸入……"></textarea>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    message: 'Runoob',
    message2: '菜鳥教程\r\nhttp://www.runoob.com'
  }
})
</script>

復(fù)選框

復(fù)選框如果是一個(gè)為邏輯值,如果是多個(gè)則綁定到同一個(gè)數(shù)組:
eg:復(fù)選框的雙向數(shù)據(jù)綁定:

<div id="app">
  <p>單個(gè)復(fù)選框:</p>
  <input type="checkbox" id="checkbox" v-model="checked">
  <label for="checkbox">{{ checked }}</label>
    
  <p>多個(gè)復(fù)選框:</p>
  <input type="checkbox" id="runoob" value="Runoob" v-model="checkedNames">
  <label for="runoob">Runoob</label>
  <input type="checkbox" id="google" value="Google" v-model="checkedNames">
  <label for="google">Google</label>
  <input type="checkbox" id="taobao" value="Taobao" v-model="checkedNames">
  <label for="taobao">taobao</label>
  <br>
  <span>選擇的值為: {{ checkedNames }}</span>
</div>
<script>
new Vue({
  el: '#app',
  data: {
    checked : false,
    checkedNames: []
  }
})
</script>
image.png

單選按鈕

eg:?jiǎn)芜x按鈕的雙向數(shù)據(jù)綁定:

<div id="app">
  <input type="radio" id="runoob" value="Runoob" v-model="picked">
  <label for="runoob">Runoob</label>
  <br>
  <input type="radio" id="google" value="Google" v-model="picked">
  <label for="google">Google</label>
  <br>
  <span>選中值為: {{ picked }}</span>
</div>
 
<script>
new Vue({
  el: '#app',
  data: {
    picked : 'Runoob'
  }
})
</script>
image.png

select列表

eg:下拉列表的雙向數(shù)據(jù)綁定:

<div id="app">
  <select v-model="selected" name="fruit">
    <option value="">選擇一個(gè)網(wǎng)站</option>
    <option value="www.runoob.com">Runoob</option>
    <option value="www.google.com">Google</option>
  </select>
 
  <div id="output">
      選擇的網(wǎng)站是: {{selected}}
  </div>
</div>
 
<script>
new Vue({
  el: '#app',
  data: {
    selected: '' 
  }
})
</script>
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市膜廊,隨后出現(xiàn)的幾起案子乏沸,更是在濱河造成了極大的恐慌,老刑警劉巖爪瓜,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹬跃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡铆铆,警方通過查閱死者的電腦和手機(jī)蝶缀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來薄货,“玉大人翁都,你說我怎么就攤上這事×禄” “怎么了柄慰?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)税娜。 經(jīng)常有香客問我坐搔,道長(zhǎng),這世上最難降的妖魔是什么巧涧? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任薯蝎,我火速辦了婚禮,結(jié)果婚禮上谤绳,老公的妹妹穿的比我還像新娘占锯。我一直安慰自己,他們只是感情好缩筛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布消略。 她就那樣靜靜地躺著,像睡著了一般瞎抛。 火紅的嫁衣襯著肌膚如雪艺演。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天桐臊,我揣著相機(jī)與錄音胎撤,去河邊找鬼。 笑死断凶,一個(gè)胖子當(dāng)著我的面吹牛伤提,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播认烁,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肿男,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼介汹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舶沛,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤嘹承,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后如庭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叹卷,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年坪它,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了豪娜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哟楷,死狀恐怖瘤载,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卖擅,我是刑警寧澤鸣奔,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站惩阶,受9級(jí)特大地震影響挎狸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜断楷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一锨匆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冬筒,春花似錦恐锣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至响牛,卻和暖如春玷禽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呀打。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工矢赁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贬丛。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓撩银,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親瘫寝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜒蕾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容焕阿。關(guān)于...
    云之外閱讀 5,050評(píng)論 0 29
  • vue.js官網(wǎng)教程學(xué)習(xí)筆記和學(xué)習(xí)摘要 起步 安裝 一個(gè)簡(jiǎn)單的方法咪啡,直接把一個(gè)vue.js引入你的HTML頁(yè)面中,...
    恰皮閱讀 3,374評(píng)論 2 22
  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會(huì)代理其 data 對(duì)象里所有的屬性:var data = { a:...
    云之外閱讀 2,209評(píng)論 0 6
  • 下載安裝搭建環(huán)境 可以選npm安裝暮屡,或者簡(jiǎn)單下載一個(gè)開發(fā)版的vue.js文件 瀏覽器打開加載有vue的文檔時(shí)撤摸,控制...
    冥冥2017閱讀 6,039評(píng)論 0 42
  • 1.安裝 可以簡(jiǎn)單地在頁(yè)面引入Vue.js作為獨(dú)立版本,Vue即被注冊(cè)為全局變量褒纲,可以在頁(yè)面使用了准夷。 如果希望搭建...
    Awey閱讀 11,023評(píng)論 4 129