5***@qq.com
5***@qq.com
  • 发布:2019-11-20 21:14
  • 更新:2020-02-13 14:40
  • 阅读:768

【报Bug】$on 接收其他页面通讯值成功 但是无法更新渲染

分类:uni-app

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

[内容]

重现步骤

[步骤]

[结果]

[期望]

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

[IDE版本号]

[windows版本号]

[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]

[运行端版本号]

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]

[编译模式是老模板模式还是新的自定义组件模式?]

App运行环境说明

[Android版本号]

[iOS版本号]

[手机型号]

[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]

2019-11-20 21:14 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

接收成功说明就不是$on的问题了,把你代码精简一下发上来我们验证一下

  • 5***@qq.com (作者)

    您可以看下! 模拟代码已经上传! 值打出来没问题 就是不渲染

    2019-11-23 03:29

  • 7***@qq.com

    我也遇到同样的问题

    2020-02-13 11:09

  • 1***@163.com

    +1

    2020-04-23 15:48

5***@qq.com

5***@qq.com (作者)

页面1代码如下
<template>
<view class="content">
<image class="logo" src="/static/logo.png"></image>
<view class="text-area">
<text class="title" @click="nav_to">{{title}}</text>
</view>
</view>
</template>

<script>
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {

    },  
    methods: {  
      nav_to(){  
          uni.$emit("tiaozhuan",{"msg":"xxxxxxxxxxxx"});  
          uni.navigateTo({  
            url:"../nav/nav",  
          })  
      }  
    }  
}  

</script>

<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}

.logo {  
    height: 200rpx;  
    width: 200rpx;  
    margin-top: 200rpx;  
    margin-left: auto;  
    margin-right: auto;  
    margin-bottom: 50rpx;  
}  

.text-area {  
    display: flex;  
    justify-content: center;  
}  

.title {  
    font-size: 36rpx;  
    color: #8f8f94;  
}  

</style>

5***@qq.com

5***@qq.com (作者)

页面2 代码如下
<template>
<view>
<view>{{msg1}}</view>
</view>
</template>

<script>
export default {
data() {
return {
msg1:"1",
}
},
onLoad() {
let me=this;
uni.$once("tiaozhuan",function(data){
me.msg1=data.msg;
console.log(me.msg1);
console.log(data.msg);

        })  
    },  
    methods: {  

    }  
}  

</script>

<style>

</style>

5***@qq.com

5***@qq.com (作者)

<template>  
    <view class="content">  
        <image class="logo" src="/static/logo.png"></image>  
        <view class="text-area">  
            <text class="title"  @click="nav_to">{{title}}</text>  
        </view>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                title: 'Hello'  
            }  
        },  
        onLoad() {  

        },  
        methods: {  
          nav_to(){  
              uni.$emit("tiaozhuan",{"msg":"xxxxxxxxxxxx"});  
              uni.navigateTo({  
                url:"../nav/nav",  
              })  
          }  
        }  
    }  
</script>  

<style>  
    .content {  
        display: flex;  
        flex-direction: column;  
        align-items: center;  
        justify-content: center;  
    }  

    .logo {  
        height: 200rpx;  
        width: 200rpx;  
        margin-top: 200rpx;  
        margin-left: auto;  
        margin-right: auto;  
        margin-bottom: 50rpx;  
    }  

    .text-area {  
        display: flex;  
        justify-content: center;  
    }  

    .title {  
        font-size: 36rpx;  
        color: #8f8f94;  
    }  
</style>  

页面2

<template>  
    <view>  
        <view>{{msg1}}</view>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                msg1:"1",  
            }  
        },  
        onLoad() {  
            let me=this;  
            uni.$once("tiaozhuan",function(data){  
                me.msg1=data.msg;  
                console.log(me.msg1);  
                console.log(data.msg);  

            })  
        },  
        methods: {  

        }  
    }  
</script>  

<style>  

</style>  
7***@qq.com

7***@qq.com

遇到同样的问题.
A页面:

uni.navigateTo({  
 url: `/pages/product/list?category=${item.ID}`  
});  
uni.$emit('pushCategories', this.subCategories);

B页面

onLoad(options) {  

            uni.$once('pushCategories', this.initCategories);  
        },  
methods: {  
  initCategories(data) {  
                console.log(data); // 第一次就不会打印,返回上一页,再次导航此页面才打印  
                this.cateList = data; // 赋值以后,页面不会更新渲染  
            },  
}
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

为什么你们都是先发送再监听的?是在哪看到的这种写法?

  • 7***@qq.com

    我的问题,我已经换其他方式实现了

    2020-02-17 18:36

  • 7***@qq.com

    原本想的是把A的数据给发送到B页面,但是过程是 A导航到B的,但是B是tab页面,没有及时打开,所以就无法监听到A的$emit.

    2020-02-17 18:37

该问题目前已经被锁定, 无法添加新回复