V-model指令的詳細(xì)用法猜敢、綁定事件姑荷、深度響應(yīng)式

? ? <div id="app">

? ? ? ? <div class="item">

? ? ? ? ? ? <span>姓名:</span>

? ? ? ? ? ? <!-- v-model指令,綁定文本框的內(nèi)容缩擂,實(shí)現(xiàn)雙向數(shù)據(jù)綁定 -->

? ? ? ? ? ? <input type="text" v-model="name">{{name}}

? ? ? ? </div>

? ? ? ? <div class="item">

? ? ? ? ? ? <span>地址:</span>

? ? ? ? ? ? <!-- v-model指令鼠冕,綁定多行文本框的內(nèi)容,實(shí)現(xiàn)雙向數(shù)據(jù)綁定 -->

? ? ? ? ? ? <textarea cols="80" rows="4" v-model="address"></textarea>{{address}}

? ? ? ? </div>

? ? ? ? <div class="item">

? ? ? ? ? ? <span>是否同意:</span>

? ? ? ? ? ? <!-- 單個(gè)復(fù)選框胯盯,通過v-model綁定一個(gè)布爾值 -->

? ? ? ? ? ? <input type="checkbox" v-model="isOK">{{isOK}}

? ? ? ? </div>

? ? ? ? <div class="item">

? ? ? ? ? ? <span>愛好:</span>

? ? ? ? ? ? <!-- 多個(gè)復(fù)選框懈费,通過v-model綁定到同一個(gè)數(shù)組 -->

? ? ? ? ? ? <input type="checkbox" value="抽煙" v-model="hobbies">抽煙

? ? ? ? ? ? <input type="checkbox" value="喝酒" v-model="hobbies">喝酒

? ? ? ? ? ? <input type="checkbox" value="燙頭" v-model="hobbies">燙頭

? ? ? ? ? ? <input type="checkbox" value="唱" v-model="hobbies">唱

? ? ? ? ? ? <input type="checkbox" value="跳" v-model="hobbies">跳

? ? ? ? ? ? <input type="checkbox" value="籃球" v-model="hobbies">籃球

? ? ? ? ? ? {{hobbies}}

? ? ? ? </div>

? ? ? ? <div class="item">

? ? ? ? ? ? <span>性別:</span>

? ? ? ? ? ? <!-- 多個(gè)單選框,通過v-model綁定同一個(gè)數(shù)據(jù) -->

? ? ? ? ? ? <input type="radio" value="男" name="sex" v-model="sex">男

? ? ? ? ? ? <input type="radio" value="女" name="sex" v-model="sex">女

? ? ? ? ? ? {{sex}}

? ? ? ? </div>

? ? ? ? <div class="item">

? ? ? ? ? ? <span>學(xué)歷:</span>

? ? ? ? ? ? <!-- 通過v-model可以給下拉框綁定一個(gè)屬性 -->

? ? ? ? ? ? <select v-model="xueli">

? ? ? ? ? ? ? ? <option value="小學(xué)">小學(xué)</option>

? ? ? ? ? ? ? ? <option value="碩士">碩士</option>

? ? ? ? ? ? ? ? <option value="博士">博士</option>

? ? ? ? ? ? ? ? <option value="博士后">博士后</option>

? ? ? ? ? ? </select>

? ? ? ? ? ? {{xueli}}

? ? ? ? </div>

? ? ? ? <div class="item">

? ? ? ? ? ? <span>美食:</span>

? ? ? ? ? ? <!-- 下拉框設(shè)置multiple屬性后博脑,就可以選擇多個(gè)項(xiàng) -->

? ? ? ? ? ? <!-- 通過v-model可以給下拉框綁定一個(gè)數(shù)組 -->

? ? ? ? ? ? <select v-model="meishi" multiple>

? ? ? ? ? ? ? ? <option value="螃蟹">螃蟹</option>

? ? ? ? ? ? ? ? <option value="龍蝦">龍蝦</option>

? ? ? ? ? ? ? ? <option value="雞腿">雞腿</option>

? ? ? ? ? ? ? ? <option value="牛排">牛排</option>

? ? ? ? ? ? ? ? <option value="海鮮">海鮮</option>

? ? ? ? ? ? </select>

? ? ? ? ? ? {{meishi}}

? ? ? ? </div>

? ? ? ? <div class="item">

? ? ? ? ? ? <span>修飾符lazy</span>

? ? ? ? ? ? <!-- v-model指令憎乙,添加.lazy修飾符,在文本框失去焦點(diǎn)后在更新數(shù)據(jù) ?-->

? ? ? ? ? ? <input type="text" v-model.lazy="msg">{{msg}}

? ? ? ? </div>

? ? ? ? <div class="item">

? ? ? ? ? ? <span>修飾符number</span>

? ? ? ? ? ? <!-- v-model指令趋厉,添加.number修飾符寨闹,在修改文本框內(nèi)容時(shí),會(huì)將修改后的內(nèi)容轉(zhuǎn)為number類型 -->

? ? ? ? ? ? <input type="text" v-model.number="age">{{age+10}}

? ? ? ? </div>

? ? ? ? <div class="item">

? ? ? ? ? ? <span>修飾符trim</span>

? ? ? ? ? ? <!-- v-model指令君账,添加.trim修飾符繁堡,在修改文本框內(nèi)容時(shí),會(huì)忽略前后的空格 -->

? ? ? ? ? ? <input type="text" v-model.trim="city">

? ? ? ? ? ? <span>長(zhǎng)度:{{city.length}}</span>

? ? ? ? </div>

? ? </div>

? ? let vm = new Vue({

? ? el:'#app',

? ? data:{

? ? name:'張三',

? ? address:'北京市朝陽區(qū)',

? ? // 用于表示是否同意

? ? isOK:true,

? ? // 愛好數(shù)組

? ? hobbies:["燙頭","跳"],

? ? // 性別

? ? sex:'女',

? ? // 學(xué)歷

? ? xueli:'博士',

? ? // 美食

? ? meishi:[],

? ? // 消息

? ? msg:'',

? ? //年齡

? ? age:20,

? ? city:'北京'

? ? },

? ? })

綁定事件

?<div id="app">

? ? ? ? <!-- v-on:指令綁定事件乡数,可以指定一個(gè)事件方法椭蹄,事件方法要在methods里面定義。

? ? 指定事件方法時(shí)净赴,如果沒有給方法傳遞參數(shù)绳矩,默認(rèn)會(huì)傳遞一個(gè)事件對(duì)象參數(shù) -->

? ? ? ? <button v-on:click="sayHi">Say Hi</button>

? ? ? ? <br><br>

? ? ? ? <!-- 如果我們傳遞了一個(gè)參數(shù),還想再傳遞事件對(duì)象參數(shù)玖翅,就要通過$event關(guān)鍵字設(shè)置翼馆。 -->

? ? ? ? <button v-on:click="sayHello('你好',$event)">Say Hello</button>

? ? ? ? <br>

? ? ? ? <br>

? ? ? ? <!-- 如果事件處理的邏輯比較簡(jiǎn)單,可以直接在行內(nèi)編寫金度。 -->

? ? ? ? <button v-on:click="name+='*'">修改name</button>{{name}}

? ? ? ? <hr>

? ? ? ? <!-- @是v-on:的簡(jiǎn)寫 -->

? ? ? ? <!-- 通過.prevent事件修飾符应媚,阻止默認(rèn)行為 -->

? ? ? ? <div class="a" @click="a" @contextmenu.prevent="cm">

? ? ? ? ? ? <!-- 通過.stop事件修飾符,阻止事件冒泡 -->

? ? ? ? ? ? <div class="b" @click.stop="b"></div>

? ? ? ? </div>

? ? ? ? <br>

? ? ? ? <!-- 通過.once事件修飾符猜极,讓事件方法只執(zhí)行一次 -->

? ? ? ? <button @click.once="once">只觸發(fā)一次</button>

? ? ? ? <br><br>

? ? ? ? <!-- 通過.self事件修飾符中姜,控制事件在當(dāng)前元素自身觸發(fā),不在內(nèi)部元素身上觸發(fā) -->

? ? ? ? <div class="c" @click.self="c">

? ? ? ? ? ? <div class="d"></div>

? ? ? ? </div>

? ? ? ? <br>

? ? ? ? <!-- 默認(rèn)情況下跟伏,手機(jī)的捕獲模式是丢胚,從內(nèi)部往外部挨個(gè)執(zhí)行翩瓜。

? ? 如果外部事件添加.capture修飾符,此時(shí)事件的不會(huì)模式就變成了携龟,從外部外內(nèi)部挨個(gè)執(zhí)行兔跌。 -->

? ? ? ? <div class="e" @click.capture="e">

? ? ? ? ? ? <div class="f" @click="f"></div>

? ? ? ? </div>

? ? ? ? <br>

? ? ? ? <!-- passive就是為了告訴瀏覽器,不用查詢了峡蟋,我們沒用preventDefault阻止默認(rèn)動(dòng)作 -->

? ? ? ? <div class="g" @scroll.passive="g">

? ? ? ? ? ? <div class="h"></div>

? ? ? ? </div>

? ? </div>

? ? new Vue({

? ? el:'#app',

? ? data() {

? ? return {

? ? name:'張三'

? ? }

? ? },

? ? methods: {

? ? sayHi(e){

? ? console.log(e);

? ? console.log('Hi');

? ? },

? ? sayHello(val,e){

? ? console.log(val);

? ? console.log(e);

? ? },

? ? a(){

? ? alert('大家好浮定!我是a')

? ? },

? ? b(){

? ? // 通過事件對(duì)象,阻止事件冒泡

? ? // e.stopPropagation();

? ? alert('大家好层亿!我是b')

? ? },

? ? cm(){

? ? // 通過事件對(duì)象,阻止默認(rèn)行為

? ? // e.preventDefault();

? ? console.log('哈哈');

? ? },

? ? once(){

? ? alert('你好呀立美!')

? ? },

? ? c(){

? ? alert('大家好匿又!我是c')

? ? },

? ? e(){

? ? alert('大家好!我是e')

? ? },

? ? f(){

? ? alert('大家好建蹄!我是f')

? ? },

? ? g(){

? ? console.log(11);

? ? }

? ? },


深度響應(yīng)式

1. 按鍵修飾符

? ?new Vue({

? ? el:'#app',

? ? // data選項(xiàng)碌更,定義屬性,該選項(xiàng)可以是一個(gè)對(duì)象洞慎,也可以是一個(gè)方法返回一個(gè)對(duì)象痛单。

? ? data:{

? ? // 商品數(shù)組

? ? goodses:['小米手機(jī)','華為電腦','蘋果手表','尼康相機(jī)'],

? ? // 搜索關(guān)鍵字

? ? keywords:'',

? ? // 搜索結(jié)果

? ? content:''

? ? },

? ? // methods選項(xiàng),定義方法

? ? methods: {

? ? keydown(){

? ? // 字符串的includes()方法劲腿,用于檢查字符串中是否包含指定的內(nèi)容旭绒,包含返回true

? ? this.content = this.goodses.find(g=>g.includes(this.keywords))

? ? }

? ? },

? ? })


2. 深度響應(yīng)式

? <div id="app">

? ? ? ? <button @click="name='李四'">修改姓名</button>

? ? ? ? <h2>{{name}}</h2>

? ? ? ? <hr>

? ? ? ? <button @click="obj.name='張飛'">修改姓名</button>

? ? ? ? <button @click="addJob">添加工作屬性</button>

? ? ? ? <button @click="delAge">刪除年齡屬性</button>

? ? ? ? <h2>{{obj}}</h2>

? ? ? ? <hr>

? ? ? ? <button @click="arr.push('可樂')">添加可樂</button>

? ? ? ? <button @click="arr.splice(1,1,'榴蓮')">通過方法修改元素</button>

? ? ? ? <button @click="updateArr">通過下標(biāo)修改元素</button>

? ? ? ? <button @click="delArr">通過下標(biāo)刪除元素</button>

? ? ? ? <h2>{{arr}}</h2>

? ? </div>

? ? // Vue實(shí)例,在初始化的時(shí)候焦人,會(huì)將對(duì)象身上的所有數(shù)據(jù)挥吵,做響應(yīng)式處理,

? ? // 之后再向?qū)ο笾刑砑訉傩曰ㄍ郑@些屬性就不再具備響應(yīng)式能力了忽匈。

? ? // 針對(duì)數(shù)組,只能通過以下方法矿辽,才能實(shí)現(xiàn)響應(yīng)式:push() pop() unshift() shift() splice() reverse() sort()

? ? // 如何解決上面的問題丹允?

? ? // 方式1:通過Vue的set方法,更新指定的對(duì)象屬性或數(shù)組成員袋倔;delete方法雕蔽,刪除指定對(duì)象的屬性或數(shù)組的成員

? ? // 方式2:通過Vue實(shí)例的$set方法,更新指定的對(duì)象屬性或數(shù)組成員奕污;$delete方法萎羔,刪除指定對(duì)象的屬性或數(shù)組的成員

? ? Vue.config.productionTip = false

? ? let vm = new Vue({

? ? el:"#app",

? ? data:{

? ? // 基本類型數(shù)據(jù)

? ? name:'張三',

? ? // 對(duì)象數(shù)據(jù)

? ? obj:{

? ? name:'張杰',

? ? age:20,

? ? sex:'男'

? ? },

? ? // 數(shù)組數(shù)據(jù)

? ? arr:['面包','餅干','薯片','巧克力']

? ? },

? ? methods: {

? ? // 給對(duì)象添加工作屬性的方法

? ? addJob(){

? ? // 通過觀察可以發(fā)現(xiàn),我們可以給對(duì)象添加屬性碳默,但是添加后的屬性贾陷,不具備響應(yīng)式能力缘眶。

? ? // this.obj.job='前端開發(fā)工程師'

? ? // set方法的參數(shù)分別是:指定的對(duì)象,對(duì)象的屬性髓废,屬性值

? ? // Vue.set(this.obj,'job','前端開發(fā)工程師')

? ? this.$set(this.obj,'job','前端開發(fā)工程師')

? ? },

? ? // 刪除對(duì)象身上年齡的方法

? ? delAge(){

? ? // delete this.obj.age

? ? // delete煩煩煩的參數(shù)分別是:指定的對(duì)象巷懈,對(duì)象的屬性

? ? // Vue.delete(this.obj,'age')

? ? this.$delete(this.obj,'age')

? ? },

? ? // 修改數(shù)組身上的成員

? ? updateArr(){

? ? // this.arr[1] = '蘋果'

? ? // 這里set方法的參數(shù)分別是:指定的數(shù)組,數(shù)組的下標(biāo)慌洪,對(duì)應(yīng)的數(shù)據(jù)

? ? this.$set(this.arr,1,'蘋果')

? ? },

? ? // 根據(jù)下標(biāo)刪除數(shù)組元素

? ? delArr(){

? ? // delete this.arr[1]

? ? // 這里的delete方法的參數(shù)分別是:指定的數(shù)組顶燕,數(shù)組的下標(biāo)

? ? this.$delete(this.arr,1)

? ? }

? ? },

? ? })


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冈爹,隨后出現(xiàn)的幾起案子涌攻,更是在濱河造成了極大的恐慌,老刑警劉巖频伤,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恳谎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡憋肖,警方通過查閱死者的電腦和手機(jī)因痛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岸更,“玉大人鸵膏,你說我怎么就攤上這事≡醮叮” “怎么了谭企?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)评肆。 經(jīng)常有香客問我赞咙,道長(zhǎng),這世上最難降的妖魔是什么糟港? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任攀操,我火速辦了婚禮,結(jié)果婚禮上秸抚,老公的妹妹穿的比我還像新娘速和。我一直安慰自己,他們只是感情好剥汤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布颠放。 她就那樣靜靜地躺著,像睡著了一般吭敢。 火紅的嫁衣襯著肌膚如雪碰凶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音欲低,去河邊找鬼辕宏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛砾莱,可吹牛的內(nèi)容都是我干的瑞筐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼腊瑟,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼聚假!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起闰非,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤膘格,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后财松,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闯袒,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年游岳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片其徙。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胚迫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唾那,到底是詐尸還是另有隱情访锻,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布闹获,位于F島的核電站期犬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏避诽。R本人自食惡果不足惜龟虎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沙庐。 院中可真熱鬧鲤妥,春花似錦、人聲如沸拱雏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铸抑。三九已至贡耽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒲赂。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工阱冶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凳宙。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓熙揍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親氏涩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子届囚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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