本篇文章為大家帶來了關於vue的相關知識,其中主要為大家介紹了我們為什麼使用v-model?用vue怎麼實現v-model的,有興趣的朋友一起來看吧,希望對大家有幫助。
v-model主要提供了兩個功能,view層輸入值影響data的屬性值,data屬性值改變會更新view層的數值變化。
其核心就是,一方面modal層透過defineProperty來劫持每個屬性,一旦監聽到變更透過相關的頁面元素更新。另一方面透過編譯模板文件,為控制項的v-model綁定input事件,從而頁面輸入能即時更新相關data屬性值。
<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>
<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>
<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>
<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影片教學》
以上是一文詳解vue怎麼實作v-model(附程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!