【发布时间】:2023-03-18 13:36:01
【问题描述】:
我想在 Vue 中创建自己的复选框。我想使用 fontawesome 中的两个图标(锁定和解锁)。当我的复选框被选中时,图标应该被锁定,否则解锁。
这是我的代码:
<template>
<div>
<i @click="statusChanged()" v-if="!checked" class="fas fa-lock-open lock"></i>
<i @click="statusChanged()" v-if="checked" class="fas fa-lock lock"></i>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import { Prop } from 'vue/types/options';
export default Vue.extend({
props: {
checked: {
type: Boolean as Prop<boolean>,
},
},
methods: {
statusChanged() {
this.checked = !this.checked;
},
},
});
我收到一个错误:
不能分配给'checked',因为它是一个常量或只读属性
你能帮忙解决这个问题吗?
【问题讨论】:
-
我从来没有在 TypeScript 中使用过 Vue,但这可能相当于 Vue 2 - Mutating props vue-warn
-
为什么不使用
data属性而不是道具? -
@GeorgeJempty 我不想使用数据,因为选中的这个选项是从组件外部设置的,来自父项
-
只需指定一个名称不是已选中的数据属性,然后将
created块添加到您将该数据属性设置为等于道具值的组件中——您是否访问过链接在上面的第一条评论中?它建议了这个解决方案。 -
@GeorgeJempty 我做到了,但这种方法存在一些问题。我没有更改从父组件传递给子组件的值。
标签: typescript vuejs2 vue-component