如何处理/忽略与durandal的坏路线?

SB2*_*055 3 single-page-application durandal

我试图有条件地阻止访问路由.我认为这可以用guardRoute完成:http://durandaljs.com/documentation/Router/

function guardRoute(routeInfo, params, instance) : object - 在激活任何路由之前,调用guardRoute函数.您可以插入此功能以添加自定义逻辑,以根据请求的路径允许,拒绝或重定向.允许,返回true.否认,返回false.要重定向,请返回带有散列或URL的字符串.您也可以返回任何这些值的承诺.

我不知道如何指定应该访问哪条路径,或者如果我需要拒绝访问,如何重新路由到另一个视图.有人可以用这种方式发布它的使用示例吗?

Rai*_*rit 6

您应该guardRoute在激活路由器之前使用,例如shell.js.该示例来自Durandal 2.0 alpha站点.AFAIK guardRoute没有从1.2改变,但是设置一个断点将允许你找出传递1.2的参数.作为一般规则,返回true允许导航,false以防止它和a hashurl值重定向.

define(['plugins/router'], function (router) {

    // Redirecting from / to first route in route.map
    router.guardRoute = function(routeInfo, params, instance){
        if (params.fragment === ''){
            return routeInfo.router.routes[0].hash;
        }
        return true;
    };
    ...    

    return {
        ...
        router: router,
        activate: function () {
            router.map([
               ---
            ]);

            return router.activate();
        }
    };
});
Run Code Online (Sandbox Code Playgroud)