吐槽一下,官网上的例子不太适用,一般都是从已有的组件上开发了,哪会直接用input来搞,以element-ui为例,演示如何通过render实现v-model
v-model的本质是通过绑定组件的value和input(绝大多数)来实现双向绑定,拆开来是组件的value绑定父组件的data数据,当data数据改变时,组件的value因为被绑定了,所以data的变化会触发value的变化,换个方向,要想组件的value改变了,需要在input事件里通知data,由此改变data,这样就能达到双向绑定的效果。在render里面,从data到组件的value方向绑定比较容易,如果是组件到data,则直接给data赋值更新即可
例子
父组件
let root = {
data:test,
render:function(h){
let self = this;
return h('el-input',{
props:{
// data绑定到value
value:self.$data.test
},
on:{
input:function(value){
// 拿到data直接赋值
self.$data.test = value
}
}
})
}
}
new Vue(root).$mount(id);