首页 > 解决方案 > m.route.param 返回“未定义”

问题描述

我已经定义了路由:

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'));

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

标签: javascriptmithril.js

解决方案


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

该演示在不同时间查询不同的可用 API

如果这不能解决您的问题,请来秘银聊天室讨论,我们可以详细讨论问题!


推荐阅读