Mar*_*rek 3 typescript vue-component vuejs2
我想在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;
},
},
});
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
无法分配给“已检查”,因为它是常量或只读属性
您能协助解决这个问题吗?先感谢您
更新:
我比问题能够解决。解决方案与TommyF的建议非常相似。
解决方法如下:
<template>
<div>
<i v-if="!checked" class="fas fa-lock-open lock" @click="statusChanged()"></i>
<i v-if="checked" class="fas fa-lock lock" @click="statusChanged()"></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>,
},
},
model: {
prop: 'checked',
event: 'click',
},
methods: {
statusChanged() {
this.$emit('click', !this.checked);
},
},
});
</script>
Run Code Online (Sandbox Code Playgroud)
看一下prop.sync修饰符。正是在这种情况下,您要更新父级值,但将其作为属性传递给子级,例如:https :
//vuejs.org/v2/guide/components-custom-events.html#sync-Modifier
基本上,您将道具标记为sync“可以:
<Checkbox :checked.sync="foo"></Checkbox>
要更新父级,您需要update:prop从子级发出一个事件:
this.$emit('update:checked', !this.checked)
这应该可以帮助您开始解决方案:https :
//codesandbox.io/s/97rl86n64
| 归档时间: |
|
| 查看次数: |
8347 次 |
| 最近记录: |