vue.js - 子组件不更新父组件的值
问题描述
我是新的 vue js。我不知道为什么当我更改父组件中的值时子组件中的值不会更新。谁能为我解释一下?我知道我可以Times Updated: {{ times}}
用来展示。但我想把它分配给 count 做别的事情
父 HTML
<div id="test">
<button @click="clicktime">Click</button>
<times-updated :times.sync="myData"></times-updated>
</div>
.js 文件
var vm = new Vue({
el: '#test',
data(){
return {
myData: 100
}
},
methods: {
clicktime() {
vm.myData = Math.random();
}
}
})
孩子
Vue.component('times-updated', {
props:["times"],
data() {
return {
count: this.times
}
},
template: '<span>Times Updated: {{ count }}</span>',
});
链接codepen:在此处输入链接描述
解决方案
您需要computed
数据而不是数据元素,它可以保持监视和更新
Vue.component('times-updated', {
props:["times"],
computed: {
count: function(){
return this.times;
}
},
template: '<span>Times Updated: {{count}}</span>',
});
var vm = new Vue({
el: '#test',
data(){
return {
myData: 100
}
},
methods: {
clicktime() {
vm.myData = Math.random();
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.js"></script>
<div id="test">
<button @click="clicktime">Click</button>
<times-updated :times.sync="myData"></times-updated>
</div>
推荐阅读
- sql - 如何通过从另一个 nvarchar 列获取值来更新数字列?
- c++ - C++ 以二进制模式写入和读取文件
- magento - 如何在 magento 2.3.3 中获得总计?
- python - 深度学习 - 不断获得低准确率
- vb.net - 操作未成功完成,因为该文件包含病毒或可能不需要的软件。(来自 HRESULT 的异常:0x800700E1)
- php - Magento 2:自定义类别属性 - 图片上传 Ajax 404
- vba - 如何替换电子邮件回复的正文并保留签名?
- prolog - 克隆、复制序言列表
- java - Spring Data CouchBase 配置:数据库不存在错误
- nlp - 我正在寻找用于技术产品审查的荷兰语标记器