我正在尝试扩展此方便但基本的反馈小部件:
http://experiments.hertzen.com/jsfeedback/

它驻留在窗口名称空间中,并发布到Blob服务器。我希望能够查看我的Durandal应用程序的路由器历史记录,并使用常规的feedack对象将快照发送回去。

谁能建议如何做到这一点?

注意:由于Durandal 2.0路由器与Backbone.js相似,因此Backbone开发人员的建议也可能会有所帮助。

我在想这样的事情:

durandalRouter.on('router:navigation:composition-complete') .then((instance: string, instruction: DurandalRouteInstruction, router: DurandalRouter) => { // todo: track history...});

最佳答案

您基本上已经找到了答案。您可以实例化一个数组,最好将其实例化为模块,但也可以实例化为全局变量:

window.appHistory = [];


然后。您将在路由器上设置事件侦听,并将指令参数附加到历史记录中。

router.on('router:navigation:complete')
    .then(function(instance, instruction, router) => {
        appHistory.push(JSON.stringify(instruction));
    };


指令对象看起来像这样。

{
    "fragment": "",
    "queryString": null,
    "config": {
        "title": "Home",
        "route": "",
        "moduleId": "viewmodels/home",
        "hash": "#",
        "routePattern": {}
    },
    "params": [],
    "queryParams": null
}

关于javascript - 如何:获取Durandal(或 Backbone )路由器历史记录并传递给window.someGlobalVar?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28552145/

10-11 22:12
查看更多