v-model

由于綁定了v-model,我們對(duì)message進(jìn)行修改會(huì)反應(yīng)到頁(yè)面上。怎么對(duì)message進(jìn)行修改?需要一個(gè)按鈕button
這是第一步虚茶,改message,ui會(huì)自動(dòng)變化仇参,如果用戶改input嘹叫,message會(huì)自動(dòng)變化

這就是雙向綁定,改內(nèi)存诈乒,頁(yè)面自動(dòng)變化罩扇,改頁(yè)面,內(nèi)存自動(dòng)變化

<template>
  <div id="app">
    <input v-model="message" placeholder="edit me"/> 
  <p>message is: {{ message}}</p>
  <p><button @click = "message = 'frank'">set message to zhang</button></p>
  </div>
</template>

<script>


export default {
  name: 'App',

  data(){//需要在data里聲明message怕磨,因?yàn)榻壎藇-model
    return {
      message: 'hi'//每個(gè)input都有對(duì)應(yīng)變量
    }
  },
  components: {
   
  }
}
</script>

2.多行文本

input改成textarea

image.png

3.復(fù)選框

不需要添加id喂饥,id是給label加for。有經(jīng)驗(yàn)前端用label標(biāo)簽包裹肠鲫,保住之后點(diǎn)擊label里的任何相當(dāng)于點(diǎn)擊input

<template>
  <div id="app">
    <label>
   <input type="checkbox"  v-model="x"  />
   <span>x:{{ x }}</span>
   </label>
  </div>
</template>
<script>
export default {
  name: 'App', 
  data(){//需要在data里聲明message仰泻,因?yàn)榻壎藇-model
    return {
      x: true//每個(gè)input都有對(duì)應(yīng)變量 選中是true,沒選是false注意單引號(hào)
    };
  },
  components: {}
};
</script>

4.多個(gè)復(fù)選框

image.png

image.png

三個(gè)v-model的value沒有區(qū)別
數(shù)據(jù)庫(kù)如果要存數(shù)字,用冒號(hào)綁定
<input type ="checkbox" v-model="x" :value="1">

5.單選按鈕radio

<template>
  <div id="app">
    你想要:{{x}}
    <hr/>
    <select v-model="x">
      <option value>-</option>
      <option v-for="item in array"
       :value="item.value" :key="item.value">{{item.text}}</option>

    </select>
    
  </div>
</template>
<script>
export default {
  name: 'App', 
  data(){
    return {
      array:[
        { text: "抽鹽",value:1},
        {text: "hejiu",value:2}
      ],
      x:""http://多選的話就是數(shù)組:[]
    };
  },
  components: {}
};
</script>


6.from表單

提交元素 要寫一個(gè)登陸框滩届,第一行用戶名

回車時(shí)刷新集侯,用form標(biāo)簽,里面有登陸按鈕button
不想頁(yè)面刷新帜消,想保存數(shù)據(jù)棠枉,監(jiān)聽@submit=onSubmit
阻止默認(rèn)動(dòng)作@submit.prevent="onSubmit"
如果不會(huì)用form的前端開發(fā)著,就是監(jiān)聽input

image.png

V-MODEL 12min

原理

一個(gè)組件上的v-model默認(rèn)會(huì)利用名為value的props和名為input的事件泡挺,但是像單選框復(fù)選框等類型的輸入控件可能會(huì)將valueattribute用于不同目的辈讶,model選項(xiàng)可以用來避免這樣沖突

v-model相當(dāng)于寫兩件事情
1.:value="user.username"
2.監(jiān)聽組件的事件,獲取他的值@input="user.username = $event.target.value"這是#model等價(jià)寫法#
model默認(rèn)input是一個(gè)元素,event是一個(gè)原生event娄猫。綁定value等于一個(gè)東西贱除,然后@input讓東西等于$event.target.value

myinput封裝

1.input怎么觸發(fā)事件生闲,用戶在修改的時(shí)候,必須在input上綁定得到value月幌,當(dāng)input變化的時(shí)候碍讯,不能直接改value的值因?yàn)檫€要觸發(fā)個(gè)input事件

2.所以@input="onInput",當(dāng)input觸發(fā)了oninput后扯躺,就再次觸發(fā)input捉兴,包裝一個(gè)有target.value的event,如圖

methods: {
    onInput(e){
        const event = {
            target:{value:e.target.value}
};
        this.$emit("input", event);
}
}

必須觸發(fā)input事件录语,event中必須含有target倍啥,里面必須有value,value的值必須是最新的值
自定義的組件不需要構(gòu)建target

methods: {
        onInput(e){
            const value = e.target.value;
            this.$emit("input",value);a
        }
    }
image.png

注意:

在myinput.vue里澎埠,input標(biāo)簽不要寫成<input v-model="value"/>

規(guī)范寫法:這樣少寫個(gè)methods

<input :value="value" @input="$emit('input',$event.target.value)">

原因:相當(dāng)于<input :value="value" @input="value = $event.target.value"/>會(huì)對(duì)value進(jìn)行賦值虽缕,當(dāng)然不能對(duì)props里的value修改賦值
解決方法computed里_value對(duì)上面value進(jìn)行封裝

computed:{
    _value:{
        get(){ return this.value},
        set(newValue){this.$emit("input",newValue);}
  }
}

input標(biāo)簽改寫成

<input :value="_value" @input="_value = $event.target.value"/>

上文還可以簡(jiǎn)寫成

<input v-model="_value" />

多聲明一個(gè)"_value"比較麻煩,簡(jiǎn)單方法寫成mixin把所有需要封裝的放進(jìn)mixin里

面試題 v-model的雙向綁定

1.解釋下v-model的作用蒲稳,

原理
一個(gè)組件上的v-model默認(rèn)會(huì)利用名為value的props和名為input的事件彼宠,但是像單選框復(fù)選框等類型的輸入控件可能會(huì)將valueattribute用于不同目的,model選項(xiàng)可以用來避免這樣沖突

v-model相當(dāng)于寫兩件事情
1.:value="user.username"
2.監(jiān)聽組件的事件,獲取他的值@input="user.username $event.target.value"這是model等價(jià)寫法
model默認(rèn)input是一個(gè)元素弟塞,event是一個(gè)原生event凭峡。綁定value等于一個(gè)東西,然后@input讓東西等于$event.target.value可以實(shí)現(xiàn)綁定一個(gè)變量决记,在變量變化的時(shí)候摧冀,ui變化。用戶改變ui的時(shí)候系宫,數(shù)據(jù)也會(huì)變化

2.v-model是v-bind:valuev-on:input的語法糖

v-on:input="???"分兩種情況
原生input就是"xxx=$event.target.value"
自定義組件:"xxx=$event"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末索昂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子扩借,更是在濱河造成了極大的恐慌椒惨,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潮罪,死亡現(xiàn)場(chǎng)離奇詭異康谆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嫉到,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門沃暗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人何恶,你說我怎么就攤上這事孽锥。” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵惜辑,是天一觀的道長(zhǎng)唬涧。 經(jīng)常有香客問我,道長(zhǎng)盛撑,這世上最難降的妖魔是什么碎节? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮撵彻,結(jié)果婚禮上钓株,老公的妹妹穿的比我還像新娘实牡。我一直安慰自己陌僵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布创坞。 她就那樣靜靜地躺著碗短,像睡著了一般。 火紅的嫁衣襯著肌膚如雪题涨。 梳的紋絲不亂的頭發(fā)上偎谁,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音纲堵,去河邊找鬼巡雨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛席函,可吹牛的內(nèi)容都是我干的铐望。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼茂附,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼正蛙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起营曼,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤乒验,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蒂阱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锻全,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年录煤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虱痕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辐赞,死狀恐怖部翘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情响委,我是刑警寧澤新思,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布窖梁,位于F島的核電站,受9級(jí)特大地震影響夹囚,放射性物質(zhì)發(fā)生泄漏纵刘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一荸哟、第九天 我趴在偏房一處隱蔽的房頂上張望假哎。 院中可真熱鬧,春花似錦鞍历、人聲如沸舵抹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惧蛹。三九已至,卻和暖如春刑枝,著一層夾襖步出監(jiān)牢的瞬間香嗓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工装畅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留靠娱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓掠兄,卻偏偏與公主長(zhǎng)得像像云,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子徽千,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345