Vue.js weex数据更改以更新到子组件 module.exports={ 数据:{ 视图信息:{ 属性0:value0, 属性1:值1 } }, 挂载:函数(){ getDataFromServer(); }, 方法:{ getDataFromServer:函数(){ var me=这个; var httpRequest=Service.getViewInfo(); httpRequest.on(“成功”,函数(数据){ me.viewInfo.attr2=data.info.attr2; me.viewInfo.attr3=data.info.attr3; me.viewInfo.attr4=data.info.attr4; }); httpRequest.send(); } } }
topView.vueVue.js weex数据更改以更新到子组件 module.exports={ 数据:{ 视图信息:{ 属性0:value0, 属性1:值1 } }, 挂载:函数(){ getDataFromServer(); }, 方法:{ getDataFromServer:函数(){ var me=这个; var httpRequest=Service.getViewInfo(); httpRequest.on(“成功”,函数(数据){ me.viewInfo.attr2=data.info.attr2; me.viewInfo.attr3=data.info.attr3; me.viewInfo.attr4=data.info.attr4; }); httpRequest.send(); } } },vue.js,components,weex,Vue.js,Components,Weex,topView.vue <template> <topView viewInfo="cardInfo"></topView> <bottomView viewInfo="cardInfo"></bottomView> <template> <script> module.exports = { data: { viewInfo:{
<template>
<topView viewInfo="cardInfo"></topView>
<bottomView viewInfo="cardInfo"></bottomView>
<template>
<script>
module.exports = {
data: {
viewInfo:{
attr0:value0,
attr1:value1
}
},
mounted:function(){
getDataFromServer();
},
methods:{
getDataFromServer:function(){
var me = this;
var httpRequest = Service.getViewInfo();
httpRequest.on("success",function(data){
me.viewInfo.attr2 = data.info.attr2;
me.viewInfo.attr3 = data.info.attr3;
me.viewInfo.attr4 = data.info.attr4;
});
httpRequest.send();
}
}
}
</script>
{viewInfo.attr0}
{item.text}
{item.info}
{viewInfo.attr1}
module.exports={
数据:{
项目信息:[
{文本:'text 0',信息:*****},
{文本:'text 1',信息:*****},
{文本:'text 2',信息:*****}
]
},
道具:{
视图信息:{}
},
计算:{
getItems:function(){
this.itemInfo[0].info=this.viewInfo.attr2+“点”;
this.itemInfo[1].info=this.viewInfo.attr3+“点”;
this.itemInfo[2].info=this.viewInfo.attr4+“点”;
返回itemInfo;
}
},
方法:{
}
}
当我从服务器获取数据,并向viewInfo添加一些属性值时。子组件可以更新直接值。计算值无法更新与来自父组件的道具数据的关系
需要一些帮助。当我更新父组件“viewInfo”值时,如何更新计算项值。Vue无法检测到在直接使用索引设置项时所做的更改,即this.itemInfo[0]。info=this.viewInfo.attr2+“point”
不是被动的
对于上述内容,请使用Vue.set
:
//创建一个新项目
var newItem=Object.assign({},this.itemInfo[0],{info:this.viewInfo.attr2+“point”})
//将新项设置为特定索引
此.$set(this.itemInfo,0,newItem)
您可以阅读更多信息:谢谢@Psidom,按照您的建议,我还修改了`getDataFromServer函数,`getDataFromServer:function(){var me=this;var httpRequest=Service.getViewInfo();httpRequest.on(“成功”,函数(数据){me.$set(me.viewInfo,'attr2',data.info.attr2);me.$set(me.viewInfo,'attr3',data.info.attr3);me.$set(me.viewInfo,'attr4',data.info.attr4);});httpRequest.send();}`
<template>
<div>
<text>{viewInfo.attr0}</text>
<div v-for="(item, index) in getItems">
<text>{item.text}</text>
<text>{item.info}</text>
</div>
<text>{viewInfo.attr1}</text>
</div>
<template>
<script>
module.exports = {
data: {
itemInfo:[
{text:'text 0',info:"****"},
{text:'text 1',info:"****"},
{text:'text 2',info:"****"}
]
},
props:{
viewInfo:{}
},
computed:{
getItems:function(){
this.itemInfo[0].info = this.viewInfo.attr2 +" point";
this.itemInfo[1].info = this.viewInfo.attr3 +" point";
this.itemInfo[2].info = this.viewInfo.attr4 +" point";
return itemInfo;
}
},
methods:{
}
}
</script>