m.route.param returns "undefined"

m.route.param returns "undefined"

我已经定义了路由:

m.route(document.getElementById('artists'), "/", {
        "/auth/:token/:refresh": {
          onmatch: (args) => {
                     ...
          }
        }
  });

当我打开 URL mysite/#!/auth/456456/54645646 并尝试使用

调试我的代码时
console.log( m.route.param('token'), m.route.param('refresh'));

我只得到未定义的。为什么?

原则上,您使用 API 的方式没有任何问题,但有些地方可能会出错。按照您构建虚拟代码的方式,您可能正试图从 onmatch 内部调用 m.route.param。在这种情况下,问题是 m.route.get & m.route.param 将查询 当前解析的 路由,直到 RouteResolver 的 onmatch 函数完成执行- 或者在它 returns 一个承诺的情况下,那个承诺已经解决 - 那么这条路线还没有被认为是当前的(以前的路线,如果有的话,将在 m.route.param 中公开)。查询正在匹配的路由的方法是调用onmatch的参数。

This demo queries the different available APIs at different times.

如果这不能解决您的问题,请来讨论in the Mithril chatroom我们可以详细讨论问题!