收藏
回答

建议在 Page 的 this 作用域中把 __router__ 显性暴露出来

问题模块
API和组件

原因: 在 Page 的控制逻辑中,非常需要知道当前的 Page 属于哪个路径,以便于代码复用。


现在的办法是,使用隐形的 this.__router__


但这总不是个办法吧。


建议在 Page 的 this 作用域中把 __router__ 显性暴露出来

回答关注问题邀请回答
收藏

5 个回答

  • 林超
    林超
    2017-05-10

    // pages/login/login.js


    const route = pages/login/login.js


    Page({

    // you code here

      onShow: () => {

         console.log(route)

    }

    })



    你自己的代码是可以知道当前是哪个route的呀

    2017-05-10
    赞同
    回复
  • Yi
    Yi
    2017-05-24

    很赞

    2017-05-24
    赞同
    回复
  • hulk
    hulk
    2017-05-19

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

    2017-05-19
    赞同
    回复
  • hulk
    hulk
    2017-05-10

    __router__ 这个私有变量在可预见的未来都是不会删除的,可以正常使用


    不过使用没有暴露在文档中的变量确实不好,我们会考虑直接直接暴露出 router 变量,并且在文档中标明

    2017-05-10
    赞同
    回复
  • Yi
    Yi
    2017-05-10

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

    目前这样做的原因是担心 __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 能够在自己的作用域下自我识别是有很大好处的。

    2017-05-10
    赞同
    回复
登录 后发表内容