原因: 在 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的呀

Y***:

我们现在就是用您的这个方法做的,但是 这样很低效。

目前这样做的原因是担心 __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 变量,并且在文档中标明

Y***:

非常感谢!

胡***:

更新的1.2.0版本已经可以使用 page 的 route 字段获取当前页面的路径了

Y***:

很赞

爱盈利(aiyingli.com)移动互联网具影响力的盈利指导网站。定位于服务移动互联网创业者,移动盈利指导。我们的目标是让盈利目标清晰可见!降低门槛,让缺乏经验、资金有限的个人和团队获得经验和机会,提高热情,激发产品。