1

这大概是一个简单的..

我正在尝试覆盖路由器的 guardRoute 功能,似乎我的版本没有被调用。

代码

app.start().then(function () {
    router.useConvention();
    viewLocator.useConvention();
    app.setRoot('viewmodels/shell', 'entrance');

    router.handleInvalidRoute = function (route, params) {
        logger.logError('No route found', route, 'main', true);
    };

    router.guardRoute = function (routeInfo, params, instance) {
        logger.logError('guardRoute called', routeInfo, 'main', true);
        return false;
    };
});

编辑 1 - 显示整个 main.js 文件

require.config({
    paths: { "text": "durandal/amd/text" }
});

define(function (require) {
   var system = require('durandal/system'),
        app = require('durandal/app'),
        router = require('durandal/plugins/router'),
        viewLocator = require('durandal/viewLocator'),
        logger = require('services/logger');

    system.debug(true);

    app.title = "my app";

    app.start().then(function () {
        router.useConvention();
        viewLocator.useConvention();
        app.setRoot('viewmodels/shell', 'entrance');

        router.handleInvalidRoute = function (route, params) {
            logger.logError('No route found', route, 'main', true);
        };

        router.guardRoute = function (routeInfo, params, instance) {
            logger.logError('guardRoute called', routeInfo, 'main', true);
            //return false;
        };
    });

});

我没有收到日志消息,路由器继续处理请求。我究竟做错了什么?

4

1 回答 1

1

我刚刚检查了 Durandal 1.2.0 的发布形式https://github.com/BlueSpire/Durandal/blob/master/Changes.txt 是的,从这个版本中添加了guardRoute。

您可以在 packages.config 文件中查看您拥有的版本!

您拥有的热毛巾模板可能是 DurandalJS 的 1.1.1 版本,我可以在 NuGet 包管理器中看到。如果我现在想下载 HotTowel 模板,它包含 DurandalJS 1.1.1

您应该在 NuGet 管理器和 Durandal 路由器中更新 Durandal,然后一切正常!

我已经完成了这个更新(但不是从热毛巾),我点击了全部更新,不要点击这个,这也会更新/下载 Durandal Starterskit 和你的背部在“0”。

于 2013-05-17T08:25:12.483 回答