RenLoong
RenLoong
  • 发布:2020-12-05 17:59
  • 更新:2020-12-16 14:43
  • 阅读:870

【报Bug】uni.setNavigationBarTitle接口设置标题选取的不是调用接口的页面,而是当前活动页

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows10

HBuilderX类型: 正式

HBuilderX版本号: 2.9.8

手机系统: iOS

手机系统版本号: IOS 14

手机厂商: 苹果

手机机型: iPhone XS Max

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

A页面

onLoad(){  
 uni.$on('updateTitle',this.updateTitle);  
},  
methods:{  
 updateTitle(data){  
  uni.setNavigationBarTitle({title: data.title});  
 }  
}

B页面

methods:{  
 updateTitle(data){  
  uni.$emit('updateTitle',{title:'B页面TITLE'});  
 }  
}

操作步骤:

A页面创建监听,B页面发送监听

预期结果:

A页面标题改变,B页面标题不变

实际结果:

B页面标题改变,A页面标题不变

bug描述:

uni.setNavigationBarTitle接口设置标题选取的不是调用接口的页面,而是当前活动页

2020-12-05 17:59 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

此类需求,可使用 navigation-bar 组件实现
文档:https://uniapp.dcloud.net.cn/component/navigation-bar

uni.setNavigationBarTitle本身设计的就是这样的。
调用 uni.setNavigationBarTitle() 时,框架不知道是在哪个页面调用的,只知道当前显示的页面,除非允许传入 this 一样的上下文,由开发者告诉框架这是在哪个页面

  • RenLoong (作者)

    使用navigation-bar组件依然是如上效果,依然是B页面被改变A页面不变

    2020-12-07 17:46

  • DCloud_UNI_FXY

    navigation-bar组件是有问题,预计下个版本修复,仅限App,H5,微信小程序,其他平台因为平台自身原因暂时不能支持,如果要跨所有平台,建议可以在A页面的onShow里边去调用setNavigationBarTitle

    2020-12-15 12:02

RenLoong

RenLoong (作者)

AB页面测试代码
navigation-bar,
不会自动读取pages.json的navigationBarBackgroundColor字段,ios默认是黑色

RenLoong

RenLoong (作者)

替代方案:

data() {  
 return {  
  Ntitle:'',  
  PageShow:false  
 }  
},  
onShow() {  
 this.PageShow=true;  
 if(this.Ntitle){  
  uni.setNavigationBarTitle({title:this.Ntitle})  
  this.Ntitle='';  
 }  
},  
onHide() {  
 this.PageShow=false;  
},  
methods: {  
 updateTitle(){  
  setTimeout(()=>{  
   if(this.PageShow){  
    uni.setNavigationBarTitle({title:'新标题'})  
   }else{  
    this.Ntitle='新标题';  
   }  
  },3000)  
 },  
}

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