首页 > 解决方案 > 路由器参数总是在激活方法中返回未定义

问题描述

我在路由器下面创建了它,它假设有一个名为name. 但是,当我例如访问dashboard/test它时,它会返回{'name': undefined}。我不知道它为什么返回undefined,因为我正在访问激活方法中的参数。

路由器

export class App {

    configureRouter(config, router) {
        //config.options.pushState = true;
        config.title = 'Aurelia';
        config.addAuthorizeStep(AuthorizeStep);
        config.options.root = '/';
        config.map([
        {
            route: 'dashboard/:name?',
            name: 'dashboard',
            moduleId: PLATFORM.moduleName('components/dashboard/dashboardcomponent'),
            title: 'Dashboard',
            layoutView: PLATFORM.moduleName('shared/layouts/app-layout.html'),
            nav: true,
            href: '#',
            settings: {
            auth: true
            }
        }
        ]);

        this.router = router;

    }
}

仪表板组件

@inject(DashboardService, Store, Router)
export class DashboardComponent {

    routeParam = null;

    // Booleans
    isLoading = false;
    hasDashboards = false;

    // dashboard docs
    dashboards = [];

    //selected dashboard
    dashboard = {};

    constructor(dashboardservice, store, router) {
        this.dashboardservice = dashboardservice;
        this.store = store;
        this.router = router;
    }


    activate(params, routeConfig) {
        console.log(params);
    }
}

标签: javascriptaurelia

解决方案


也许您没有注意到评论,所以我将其发布为答案。

我将它创建为沙盒,它工作正常。

它不完全相同..因为您没有发布所有相关代码。

  1. 确保您没有运行旧缓存版本的代码。
  2. 确保你没有在你的AuthorizeStep

推荐阅读