你们有没有想过一个问题?就是v-model这个东西,它在vue里面可是个大热门!不过你知道吗,它只能用在表单元素上,就像input和textarea这些东西。官网上的例子也是只限于表单组件的使用。但是,如果我们想把v-model用到自定义组件中?那该怎么办?其实官网上的例子已经给出了很清晰的解释了,只是要是你太死脑筋的话,那就限制住了自己咯,没错说的就是我这个人-.-.其实,通过v-model在父组件中对显示和消失进行控制已经可以实现了。但是要注意,封装组件的value属性名是不能随便改的,必须叫value才行。为什么?你要看看源码才知道!所以,我们可以加上model属性来修改代码。当然了,我们也可以通过model属性来修改value这个属性名,达到同样的效果。不过要记住,如果你不加model属性的话,在props里面修改value属性名是没用的,因为默认情况下v-model会默认修改的还是value。你们还有没有想过一个问题?就是v-model这个东西,它在vue里面可是个大热门!不过你知道吗,它只能用在表单元素上,就像input和textarea这些东西。官网上的例子也是只限于表单组件的使用。但是,如果我们想把v-model用到自定义组件中?那该怎么办?其实官网上的例子已经给出了很清晰的解释了,只是要是你太死脑筋的话,那就限制住了自己咯,没错说的就是我这个人-.-.其实,通过v-model在父组件中对显示和消失进行控制已经可以实现了。但是要注意,封装组件的value属性名是不能随便改的,必须叫value才行。为什么?你要看看源码才知道!你们还有没有想过一个问题?就是v-model这个东西,它在vue里面可是个大热门!不过你知道吗,它只能用在表单元素上,就像input和textarea这些东西。官网上的例子也是只限于表单组件的使用。但是,如果我们想把v-model用到自定义组件中?那该怎么办?其实官网上的例子已经给出了很清晰的解释了,只是要是你太死脑筋的话,那就限制住了自己咯,没错说的就是我这个人-.-.所以,我们可以加上model属性来修改代码。当然了,我们也可以通过model属性来修改value这个属性名,达到同样的效果。不过要记住,如果你不加model属性的话,在props里面修改value属性名是没用的,因为默认情况下v-model会默认修改的还是value。以上就是小编给大家介绍的Vue中的v-model组件封装(类似弹窗组件)!希望对大家有所帮助。如果你们有什么疑问或者想法,请给我留言!小编会及时回复你们的。在此也非常感谢大家对我们网站的支持!文章到这里就要结束!希望大家能够喜欢这篇推文,并且留下你们宝贵的评论和互动!记得点赞和分享给你的朋友们,让更多人知道v-model的魅力!
Vue.component('base-checkbox', { model: { prop: 'checked', event: 'change' }, props: { checked: Boolean }, template: ` ` })
export default { props:{ value:{ type:Boolean, default:false } } }这是v-model的弹窗组件import VModel from "./Vmodel" export default { components:{VModel}, data:function(){ return { value:true } } }
props:{ value1:{ //失效 type:Boolean, default:false } }
function transformModel (options, data: any) { const prop = (options.model && options.model.prop) || 'value' //子组件不存在options.model,默认给value const event = (options.model && options.model.event) || 'input'//event="input" ;(data.attrs || (data.attrs = {}))[prop] = data.model.value const on = data.on || (data.on = {}) const existing = on[event] //undefined const callback = data.model.callback //f() if (isDef(existing)) { //false if ( Array.isArray(existing) ? existing.indexOf(callback) === -1 : existing !== callback ) { on[event] = [callback].concat(existing) } } else { on[event] = callback //把回调赋值给监听的函数 } }
评论0