vue组件兼容v-model

组件系统作为Vue最重要的部分之一,多人协作开发的时候,写好一个可复用的组件灰常重要,别的同事用到你写的组件的时候会觉得:“诶,这个小伙汁有点东西!”

  • 如果不用v-model,在原生input标签上怎么实现双向绑定呢?


v-model就是上面操作的语法糖

  • 下面我们来实现一个简单的星级组件并兼容v-model





有两个关键的地方:
1、组件的props中必须要定义value属性
2、当值变化后,一定要用input事件回传修改后的值

写好注册就可以在任意组件中使用了



那么问题来了:如果我编写的组件内部还有一个使用v-model的组件怎么办呢?

比如刚才的组件我想在element提供的el-rate组件基础上做一层封装,只需要把"v-model"替换为":value",这样功能即可正常使用。(当然,如果你是按需加载element组件的话,不要忘了先注册组件)


如果报了这个错:[Vue warn]: Invalid prop: type check failed for prop "value". Expected Number, got String.说明你传进来的value是个String类型的值,el-rate的value参数只接受Number类型的值,把组件v-model绑定的变量改成数字类型就好了。


是不贼简单?组件兼容了v-model你就是这条该上最靓的那个仔!

你可能感兴趣的:(vue组件兼容v-model)