【发布时间】:2020-11-24 20:38:27
【问题描述】:
这个问题可能看起来很基本(可能是因为它是),但由于某种原因,我很难弄清楚如何处理它。基本上,我有一个属性传递给我的 Vue 组件,它规定了组件中的一些样式差异。话虽如此,我在组件中有一个按钮,我想更改此属性。显然,使用 Vue,我无法直接更改父属性值(Vue 变得疯狂),但我无法弄清楚如何在不使用初始属性值的情况下计算动态属性,这将使其无法更改。我确信有一个简单的解决方案,所以希望有人能指出我的愚蠢。
(为了简单起见,我已经删除了组件的其余部分,因为这个问题只涉及几个部分
这是组件:
<template>
<div>
<button type="button" :style="{
backgroundColor: isSaved ? 'gray' : '#68AEFA',
}" v-on:click="savePost()">
{{ isSaved ? 'Unsave' : 'Save' }}
</button>
</div>
</template>
<script>
export default {
props: ['saved'],
methods:{
savePost: function() {
// Want to change value of isSaved here
},
},
computed: {
isSaved: function () {
if (this.saved == '0') {
return false
} else {
return true
}
}
},
}
</script>
希望上面的代码能更好地显示我所描述的内容。本质上,isSaved 取决于属性“已保存”的初始值,它从中推断出其值。由于 Vue 不允许我直接更改已保存的值,我初始化了另一个变量 isSaved,它是根据初始保存的属性值计算得出的,但是如果 isSaved 的值基于“已保存”的值,我该如何更改它?
再次,抱歉这个问题很愚蠢,但我在 Vue 文档中看不到任何关于我将如何做到这一点的内容,因为它依赖于页面加载计算属性,而没有太多描述你将如何处理调整值。
【问题讨论】:
-
你应该在你的道具绑定上使用sync modifier。
标签: vue.js