原因: 在 Page 的控制逻辑中,非常需要知道当前的 Page 属于哪个路径,以便于代码复用。
现在的办法是,使用隐形的 this.__router__
但这总不是个办法吧。
建议在 Page 的 this 作用域中把 __router__ 显性暴露出来
网友回复:
// pages/login/login.js
const route = pages/login/login.js
Page({
// you code here
onShow: () => {
console.log(route)
}
})
你自己的代码是可以知道当前是哪个route的呀
我们现在就是用您的这个方法做的,但是 这样很低效。
目前这样做的原因是担心 __router__ 这个隐形属性不可依赖。
因为有30多个form page,我们需要实现的是保存(save) 并恢复(restore) 用户在 form page 上的输入。
那么 page router 是一个非常合适的 storage key。
再往深里看
这些 form pages 的 save / restore / input validation 都是大量重复的逻辑。因此一个更合理的模型是使用助手方法抽取掉大量重复的逻辑。 而 Page 的 onHide / onShow / onLoad / onUnload 正好完美的把助手方法生产的方法实例绑定到当前的 page 作用域上。
因此 我觉得 让 Page 能够在自己的作用域下自我识别是有很大好处的。
__router__ 这个私有变量在可预见的未来都是不会删除的,可以正常使用
不过使用没有暴露在文档中的变量确实不好,我们会考虑直接直接暴露出 router 变量,并且在文档中标明
非常感谢!
更新的1.2.0版本已经可以使用 page 的 route 字段获取当前页面的路径了
很赞