javascript - 为什么我不能将属性直接分配到我的数据中?
问题描述
我无法访问我的问题道具以将其属性直接分配到我的数据属性中。直接从我的模板中使用该属性可以工作,但无法将该属性分配给数据。
我只能从我的模板中访问 props 的值:
props: ['question'],
data () {
return {
}
};
computed: {
upVote () {
return this.question.upvoted
},
count () {
return this.question.vote_count
}
}
methods: {
upVoteIt () {
if(User.loggedIn()) {
this.upVote = !this.upVote
this.upVote ? this.incr() : this.decr()
}
},
incr () {
this.count ++
},
decr () {
this.count --
}
}
<v-icon size="50" :color="upcolor" @click="upVoteIt">fas fa-sort-up</v-icon>
<span> {{ count }} </span>
如果我直接在模板中使用道具而不是重新分配到数据属性中,我会得到值。
解决方案
您可以使用 .sync 修饰符。当您想将 props 与您的父组件同步时,您可以使用它的一项特殊功能:这里是文档。您将不再使用这些数据。
那么它是如何工作的,你需要在你的子组件中发出一个带有更新值的事件更新问题:
props: ['question'],
methods: {
upVoteIt () {
if(User.loggedIn()) {
this.$emit('update:question', {
...this.question,
upvoted: !this.question.upvoted,
count: this.question.upvoted ? this.question.count - 1 : this.question.count + 1
}
}
}
}
<v-icon size="50" :color="upcolor"
@click="upVoteIt">fas fa-sort-up</v-icon>
<span> {{ question.vote_count }} </span>
现在在您的父母中,您需要执行以下操作:
<YourQuestionComponent
:question.sync="myQuestionVariable"
/>
推荐阅读
- scala - 将 Spark Dataframe 列转换为行
- vuejs2 - 从jQuery数据表选项中的方法范围执行函数-Vue2
- android - Expo error 出了问题无法加载 exp://127.0.0.1:19000
- javascript - 在JS的导航栏中向下滚动时如何显示不同的徽标颜色
- visual-studio - 为什么这段代码在 Visual Studio 2019 中被圈出(即概述)?
- notepad++ - 如何为插件功能添加热键快捷方式?
- azure - 在 Azure DevOps Pipelines 中使用 GPU 创建 VM 的最佳实践
- jms - 用户没有权限=使用 Artemis 2.10.1 中的自定义 JAAS 模块发送
- node.js - 请求有效负载即使在 https 上也以明文形式显示凭据
- amazon-s3 - 下载给定开始时间和结束时间的部分视频(将时间范围转换为字节范围)