vue.js - 如何在与表单无关的元素上使用 v-model?
问题描述
首先,我在内部使用 Vuetify 的VSwitch
组件my-component
。我想将值返回my-component
给父级。
就像是<my-component v-model="returnedData"></my-component>
然后是内<my-component></my-component>
<template>
<div>
<v-switch v-model="toggledData" value="John"></v-switch>
<v-switch v-model="toggledData" value="Andrew"></v-switch>
<v-switch v-model="toggledData" value="Melissa"></v-switch>
<v-switch v-model="toggledData" value="Elizabeth"></v-switch>
</div>
</template>
<script>
export default {
props: ['value'],
data () {
return {
toggledData: []
}
}
}
</script>
如果可能,我想将 的值返回toggledData
给使用它的父级。我已经浏览了一段时间的网络,但我只看到了输入。但是像 Vuetify 的一些组件是可能的,VTreeview
所以我想也许是可能的。
解决方案
在您的示例中使用v-model
like :
<my-component v-model="returnedData"></my-component>
(默认情况下)等价于:
<my-component :value="returnedData" @input="returnedData = $event"></my-component>
任何组件都可以v-model
通过拥有一个value
prop 并发出一个input
事件来支持。可以使用该model
选项更改道具和事件的名称,请参阅https://vuejs.org/v2/guide/components-custom-events.html#Customizing-Component-v-model
所有这些都假设您需要双向数据绑定。在您的问题中,您似乎暗示您只想将数据传递给父级,这只是一种方式。为此,您只需要发出一个事件并使用@
侦听器侦听该事件。
在这种情况下,真正创建双向数据绑定会很棘手。最简单的方法是放下v-model
并v-switch
分别使用道具和事件。还有其他选择,例如使用v-model
具有 getter 和 setter 的计算属性,但我不相信这会使事情变得更清晰。
推荐阅读
- keystonejs - KeystoneJs 虚拟字段不能使用自定义字段类型
- unity3d - 当没有附加对撞机时,Unity 中的 NavMeshAgent 会相互卡住
- dataframe - 如何将一年中的月份转换为第一个月
- task - 任务管理
- python - 在 D 维超球面上生成尽可能远的 N 个点
- json - 使用 SignalR 创建 Windows Forms .Net Core 应用程序
- python - 使用 Scrapy-Python 抓取网站所有页面后如何执行任务
- python - gui的滚动条小部件
- svelte - 使用带有 sveltekit 的 svelte-forms 时调用外部组件初始化的函数
- excel - 比较 Word 文档并创建带有跟踪更改的新文档