使用 v-model 自定义 Vue 组件

Posted

技术标签:

【中文标题】使用 v-model 自定义 Vue 组件【英文标题】:Customized Vue Component using v-model 【发布时间】:2019-07-05 21:55:20 【问题描述】:

Vue 新手在这里。

阅读以下关于视图组件的指南:

https://vuejs.org/v2/guide/components-custom-events.html#Customizing-Component-v-model

大概在单击复选框时,'lovingVue' 的值将被传递给 'checked' 属性,该属性可以是真值或假值。但我不明白 Vue 实例应该是什么样子,想知道是否有人可以向我解释一下?

干杯, 杰夫。

【问题讨论】:

我不这么认为,我不确定 vue 实例应该是什么样子(我知道它需要以某种形式包含 loveVue 属性) 【参考方案1】:

JS Fiddle Demo(使用时打开控制台)

嘿,杰弗瑞,

首先,我认为我也是新手,我将永远是:)....

Vue.component() 是一种制作组件模板的方法,但在脚本内部而不是在 HTML 模板内部......仍然需要启动 new Vue() 实例。

子组件内部的"$emit('change', $event.target.checked) 只是子组件将值发送回父组件的一种方式...

$emit() 采用的第一个参数是事件侦听器名称(可以是任何单词)check this link,这就是为什么这里的事件侦听器 <base-checkbox @change="lovingVue"> 被称为 @change

它采用的第二个参数是您要发送回父级的值...在这种情况下,我们要发送v-bind:checked="checked" 值...。这个名称是我们在$event.target 之后提到的.

然后是 lovingVue 部分,您可以在方法中将其作为函数调用(就像您将其视为任何其他事件一样),它将携带值

    new Vue(
    //'#app' is the name of the parent componenet
    el: '#app',
    methods:
      // The e (can be any letter or word) here is the value that was emitted by the
      // child(base-checkbox) to the parent(app)...and this case the value is Boolean
      lovingVue(e)
        console.log(e)
      
    
    )

【讨论】:

希望对你有所帮助:)

以上是关于使用 v-model 自定义 Vue 组件的主要内容,如果未能解决你的问题,请参考以下文章

Vue:从自定义组件派生的自定义组件中的 v-model 和输入事件

vue框架之自定义组件中使用v-model

vue 组件自定义v-model

使用 v-model 自定义 Vue 组件

Vue学习Vue高级特性

vue v-model 在自定义组件上的使用教程