小程序
小游戏
企业微信
微信支付
扫描小程序码分享
var
pages = getCurrentPages();
currentpage = pages[pages.length - 1]
在组件中能够拿到currentpage,也有options选项,为什么在获取的时候currentpage.options就是undefined呢?而且遍历这个对象也没有遍历到options。这是什么原因啊?
6 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我想了下,应该是异步函数的问题,options应该是从某个异步函数中被添加上去的,所以在组件的attached中直接同步获取获取不到。。。。
换个地方就能获取了。。。。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
ready生命周期没问题,可以获取到。
因为options是异步赋值的。我也遇到了。吐了。
验证:你用setTimeout包一下再读取options就有了。
自定义组件的生命周期函数
小程序组件可用的全部生命周期如下表所示:
生命周期函数参数描述说明
created无在组件实例刚刚被创建时执行
attached无在组件实例进入页面节点树时执行
ready无在组件在视图层布局完成后执行
moved无在组件实例被移动到节点树另一个位置时执行
detached无在组件实例被从页面节点树移除时执行
errorObject Error每当组件方法抛出错误时执行
在组件里用ready()这个方法去执行获取就可以了
onLoad(options) {
// 所有路径信息
// 当前页面信息 可以直接理解为当前页面的this
console.log(
'pages=>'
, pages)
'currentpage=>'
, currentpage, currentpage.options)
'页面接收参数=>'
, options)
},
这里的currentpage就是page,就是this所有,就会有this所具有的所有属性和方法
再说遍历options问题
Page({
onLoad(){
,currentpage.options)
for
(let i
in
currentpage){
console.log(i)
if
(i==
'options'
){
'i=>'
,i)
}
})
结果:
经过实验无论页面是否存在options参数,也就是options是否为空都能通过for循环获得,至于你为什么没有获得,不清楚你是怎么操作的
并听不懂你在说什么,去弄个代码片段吧
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我想了下,应该是异步函数的问题,options应该是从某个异步函数中被添加上去的,所以在组件的attached中直接同步获取获取不到。。。。
换个地方就能获取了。。。。
ready生命周期没问题,可以获取到。
因为options是异步赋值的。我也遇到了。吐了。
验证:你用setTimeout包一下再读取options就有了。
自定义组件的生命周期函数
小程序组件可用的全部生命周期如下表所示:
生命周期函数参数描述说明
created无在组件实例刚刚被创建时执行
attached无在组件实例进入页面节点树时执行
ready无在组件在视图层布局完成后执行
moved无在组件实例被移动到节点树另一个位置时执行
detached无在组件实例被从页面节点树移除时执行
errorObject Error每当组件方法抛出错误时执行
在组件里用ready()这个方法去执行获取就可以了
onLoad(options) {
// 所有路径信息
var
pages = getCurrentPages();
// 当前页面信息 可以直接理解为当前页面的this
var
currentpage = pages[pages.length - 1]
console.log(
'pages=>'
, pages)
console.log(
'currentpage=>'
, currentpage, currentpage.options)
console.log(
'页面接收参数=>'
, options)
},
这里的currentpage就是page,就是this所有,就会有this所具有的所有属性和方法
再说遍历options问题
Page({
onLoad(){
var
pages = getCurrentPages();
var
currentpage = pages[pages.length - 1]
console.log(
'currentpage=>'
,currentpage.options)
for
(let i
in
currentpage){
console.log(i)
if
(i==
'options'
){
console.log(
'i=>'
,i)
}
}
},
})
结果:
经过实验无论页面是否存在options参数,也就是options是否为空都能通过for循环获得,至于你为什么没有获得,不清楚你是怎么操作的
并听不懂你在说什么,去弄个代码片段吧