同感,如果只是一级wxml的话,直接setData也还好,但是如果用到模板,那就真麻烦了,得传两次了 [代码]<view>[代码][代码] [代码][代码]<text>{{ aVariableFromAppGlobalData }}</text>[代码][代码] [代码][代码]<template is=[代码][代码]"a-template"[代码] [代码]data=[代码][代码]"{{ test: aVariableFromAppGlobalData }}"[代码][代码]></template>[代码][代码]</view>[代码]
可以在WXML中使用app.js中定义的全局变量吗?可以在WXML中使用app.js中定义的全局变量吗?如果不可以,希望微信小程序研发小组考虑在WXML中内置隐形对象,类似JSP的9大隐形对象,在EL表达式中能直接使用。比如微信的WXML内置app的隐形全局变量,可以在任何页面通过{{app.globalData.userdata.userInfo.nickName}}来直接使用。
2019-01-10我也遇到相同的问题了 App.js里的onShow也一样有相同的问题 暂时只能自己设个标识来侦测onShow是否已经被调用过了 以下这个办法是不得已的办法,但是如果要在每个Page里都做这个判断的话问题就严重了,得重写Page,用Component来替代,但是那又牵扯出更多的问题。 [代码]onShow: [代码][代码]function[代码][代码]() {[代码] [代码] console.log(this.globalData.onShow); // 第一次被调用返回为False,第二次错误被调用返回为True[代码] [代码] [代码][代码]if[代码] [代码](![代码][代码]this[代码][代码].globalData.onShow) {[代码][代码] [代码][代码]// execute code[代码][代码] [代码][代码]this[代码][代码].globalData.onShow = [代码][代码]true[代码][代码];[代码][代码] [代码][代码]}[代码][代码]},[代码] [代码]onHide: [代码][代码]function[代码][代码]() {[代码][代码] [代码][代码]this[代码][代码].globalData.onShow = [代码][代码]false[代码][代码];[代码][代码]}[代码] 找到一个应该可以暂时使用的方法,也不影响已经定义的onShow和onHide [代码]// custom-page.js[代码][代码]let customPage = [代码][代码]function[代码][代码](options) {[代码] [代码] [代码]options.onShowFlag = [代码][代码]false[代码][代码];[代码][代码] [代码] [代码] [代码] [代码][代码]let onShowFunction = options.onShow; [代码][代码]// 这里自行做错误监测[代码][代码] [代码][代码]options.onShow = [代码][代码]function[代码][代码]() {[代码][代码] [代码][代码]if[代码] [代码](![代码][代码]this[代码][代码].onShowFlag) {[代码][代码] [代码][代码]onShowFunction.call([代码][代码]this[代码][代码], arguments);[代码][代码] [代码][代码]this[代码][代码].onShowFlag = [代码][代码]true[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]};[代码] [代码] [代码][代码]let onHideFunction = options.onHide; [代码][代码]// 这里自行做错误监测[代码][代码] [代码][代码]options.onHide = [代码][代码]function[代码][代码]() {[代码][代码] [代码][代码]this[代码][代码].onShowFlag = [代码][代码]false[代码][代码];[代码][代码] [代码][代码]onHideFunction.call([代码][代码]this[代码][代码], arguments);[代码][代码] [代码][代码]}; [代码] [代码] [代码][代码]return[代码] [代码]options;[代码][代码]}[代码] [代码]// page[代码][代码]Page([代码][代码]new[代码] [代码]customPage({[代码][代码] [代码][代码]onShow: [代码][代码]function[代码][代码]() {},[代码][代码] [代码][代码]onHide: [代码][代码]function[代码][代码]() {}[代码][代码]}));[代码]
onShow 生命周期被错误的重复调用- 当前 Bug 的表现(可附上截图) 小程序首页 onShow 生命周期 在保持小程序面板不关闭的情况下会被调用两次 - 预期表现 onShow 被调用一次 - 复现路径 下拉小程序面板,点击进入小程序(onShow输出1次,正确) 点击右上角关闭小程序 保持小程序下拉面板,再次点进小程序(onShow 输出2次,不正确) 小程序下拉面板指的时下图红框内部分,个人测试发现一旦收起该面板重新下拉再进入 onShow 能够正常被调用1次 [图片] ) - 提供一个最简复现 Demo Page({ onShow(){ console.log("onShow"); } })
2019-01-09