一文详解vue怎么实现v-model(附代码示例)
3071
本篇文章给大家带来了关于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>
本文网址:https://www.zztuku.com/index.php/detail-13705.html
站长图库 - 一文详解vue怎么实现v-model(附代码示例)
申明:本文转载于《掘金社区》,如有侵犯,请 联系我们 删除。
您还没有登录,请 登录 后发表评论!
提示:请勿发布广告垃圾评论,否则封号处理!!