站長資訊網
最全最豐富的資訊網站

一文詳解vue怎么實現v-model(附代碼示例)

本篇文章給大家帶來了關于vue的相關知識,其中主要給大家介紹了我們為什么使用v-model?用vue怎么實現v-model的,感興趣的朋友一起來看一下吧,希望對大家有幫助。

一文詳解vue怎么實現v-model(附代碼示例)

  • 為什么使用v-model? v-model作為雙向綁定指令也是vue兩大核心功能之一,使用非常方便,提高前端開發效率。在view層,model層相互需要數據交互,即可使用v-model。
  • v-model的原理簡單描述

v-model主要提供了兩個功能,view層輸入值影響data的屬性值,data屬性值發生改變會更新view層的數值變化。

其核心就是,一方面modal層通過defineProperty來劫持每個屬性,一旦監聽到變化通過相關的頁面元素更新。另一方面通過編譯模板文件,為控件的v-model綁定input事件,從而頁面輸入能實時更新相關data屬性值。

  • v-model是什么 v-model就是vue的雙向綁定的指令,能將頁面上控件輸入的值同步更新到相關綁定的data屬性,也會在更新data綁定屬性時候,更新頁面上輸入控件的值。

vue2.0實現方法

  • 父組件

<template>   <div id="app">     {{username}} <br/>     <my-input type="text" v-model="username"></my-input>   </div> </template>  <script> import myinput from './components/myinput' export default {   name: 'App',   components:{       myinput   },   data(){     return {       username:''     }   }  } </script>
登錄后復制

  • myinput.vue:

<template>     <div class="my-input">         <input type="text" class="my-input__inner" @input="handleInput"/>     </div> </template>  <script>     export default {         name: "myinput",         props:{             value:{ //獲取父組件的數據value                 type:String,                 default:''             }         },         methods:{             handleInput(e){                 this.$emit('input',e.target.value) //觸發父組件的input事件             }         }     } </script>
登錄后復制

最常見的還有一種事控制模態框的展示與關閉,我們也可以用v-model 以element 的 el-dialog組件為例子

  • App.vue

<template>     <div>         <kmDialog             v-model="showDialog"         >         <el-button @click="show">點我</el-button>     </div> </template> <script>     import kmDialog from 'KmDialog.vue'     export default {         components: {             KmDialog         }         data () {             return {                 showDialog: false             }         },         methods: {             show() {                 this.showDialog = true             }         }     } </script>
登錄后復制

  • KmDialog.vue

<template>     <el-dialog         :title="isEdit ? '編輯設備' : '新增設備'"         :visible.sync="value"         width="40%"         @close="cancel"       >         <span>這是一段信息</span>     </el-dialog> </template> <script>     export default {         props: {             value: {                 default: false,                 type: Boolean             }         },         methods: {             cancel() {                 this.$emit('input', false)             }         }     } </script>
登錄后復制

推薦學習:《vue.js視頻教程》

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
午夜精品久久久久久久| 久久乐国产精品亚洲综合| 国产精品无码久久四虎| 在线观看精品视频看看播放| 日韩精品一区二区三区四区| 精品国产高清在线拍| 精品无码中出一区二区| 久久精品国产清自在天天线| 亚洲国产日韩在线| 国产色婷婷精品免费视频| 四虎国产精品永久在线无码| 国产精品亚洲精品| 精品无码一区二区三区电影| 久久精品a亚洲国产v高清不卡| 亚洲国产精品无码久久一线| 日韩视频在线精品视频免费观看| 国产精品萌白酱在线观看| 国产精品嫩草影院AV| 亚洲日韩精品A∨片无码加勒比| 精品国产三级a∨在线| 91热成人精品国产免费| 精品永久久福利一区二区| 午夜精品美女写真福利| 亚洲av无码乱码国产精品fc2| 亚洲中文字幕无码久久精品1| 国产中文在线亚洲精品官网| 精品视频久久久久| 久久国产精品免费一区二区三区| 国产精品igao视频| 国产精品国产三级国产| 国产精品福利片免费看| 国产精品久久久天天影视香蕉| 国产A√精品区二区三区四区| 国产福利精品在线观看| jizz国产精品网站| 国产成人精品免高潮在线观看| 亚洲国产精品嫩草影院久久 | 国内精品久久久久久影院| 精品国产一区二区二三区在线观看| 在线视频精品一区| 69p69国产精品|