You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Durandal路由获取当前页面URL及URL参数?

用Durandal路由获取URL参数的解决方案

我之前在Durandal项目里刚好处理过类似的需求,完全不需要直接操作window.location.href——Durandal的路由系统已经帮我们封装好了这些能力,下面给你具体的实现步骤:


1. 在视图模型的激活方法中直接获取

Durandal的视图模型会在激活时自动接收路由定义中的参数,同时你可以通过router.activeInstruction()拿到URL里的查询参数。假设你的路由配置是sample/:moduleName,可以这样写:

define(['plugins/router'], function(router) {
    var viewModel = {
        // 激活方法会自动传入路由定义中的占位符参数(比如这里的moduleName)
        activate: function(moduleName) {
            // 你已经能获取到的模块名称
            this.currentModule = moduleName;
            
            // 获取URL中的查询参数(比如token)
            var queryParams = router.activeInstruction().queryParams;
            this.token = queryParams.token; // 这里就得到了0df16b9b-73c8-45cb-83e8-7adf66ab9570
            
            // 接下来就可以用token完成你的业务逻辑了
            console.log('当前模块:', this.currentModule, 'Token:', this.token);
        },
        currentModule: '',
        token: ''
    };
    return viewModel;
});

2. 全局/非激活场景下获取当前路由信息

如果需要在视图模型的其他方法或者全局位置获取当前路由及参数,直接调用router.activeInstruction()即可,它包含了所有路由相关的核心信息:

define(['plugins/router'], function(router) {
    function getCurrentRouteDetails() {
        var instruction = router.activeInstruction();
        if (!instruction) return;
        
        // 获取#后面的完整路由片段(包含查询参数)
        var fullRouteFragment = instruction.fragment; // 结果是"sample/moduleName?token=0df16b9b-73c8-45cb-83e8-7adf66ab9570"
        
        // 获取解析后的查询参数对象
        var queryParams = instruction.queryParams; // { token: "0df16b9b-73c8-45cb-83e8-7adf66ab9570" }
        
        // 获取路由参数数组(对应路由定义中的占位符)
        var routeParams = instruction.params; // ["moduleName"]
    }
});

3. 确保路由配置正确

别忘了在路由映射里正确定义你的路由规则,这样Durandal才能正确解析参数:

router.map([
    { 
        route: 'sample/:moduleName', 
        moduleId: 'path/to/your/module', 
        title: 'Sample Module' 
    }
]).buildNavigationModel();

这种方式比直接操作window.location更符合Durandal的设计理念,而且能自动适配路由变化的场景,避免手动解析URL带来的潜在问题。

内容的提问来源于stack exchange,提问作者Jeya Suriya Muthumari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:09:57