vue.js - vue.js 组件中的自定义事件
问题描述
场景
因为我有一个更复杂的复选框,所以我将它封装在一个单独的组件中。在父组件的模板中,我更喜欢使用v-model
将值绑定到变量。
我的方法是基于从官方文档中获取的这个描述( https://vuejs.org/v2/guide/components-custom-events.html#Customizing-Component-v-model )。
问题
当我有两个custom-checkbox
- 元素并选择最后一个时,将选择 DOM 中的第一个。看来,第一个正在消费该事件。
编码
以下代码片段说明了复选框组件。
<template>
<div class="checkbox-part">
<input class="checkbox-part-input" type="checkbox" name="cb" id="cb"
v-bind:checked="checked"
v-on:change="$emit('change', $event.target.checked)"
>
<label class="checkbox-part-label" for="cb"
:class="{ 'checkbox-part-label--checked': checked }"
>
<slot name="label"></slot>
</label>
<!-- removed for brevetiy -->
</div>
</template>
<script>
export default {
model: {
prop: 'checked',
event: 'change'
},
props: {
checked: {
type: Boolean,
}
}
}
</script>
我怎样才能实现,选定的复选框已更新?
解决方案
您在组件中有硬编码的输入名称。因此,您可能会渲染两个具有相同名称的输入(在本例中为“cb”),我认为您可以将输入名称和 id 作为道具传递。
这应该可以解决您的问题。
推荐阅读
- database - 如何在datagridview中获得数据排序的可能性
- c++ - partial_sort 的中间迭代器可以等于结束迭代器吗?
- javascript - 使用Javascript随机分组数组元素
- android - 发布后使用 EventBus 的 Android 不更新另一个视图
- r - 如何将 PNG 文件插入 R 标记
- python - Python - Tkinter:如何在循环中创建单选按钮?
- regex - 如何使用正则表达式删除匹配行上方和下方的行?
- jira - JQL 搜索具有特定标签的所有父问题,并包括这些问题的任何子任务
- c# - 将列表框数据拉到 sqlite
- folium - folium choropleth 返回空白