0

我无法使用带有 requirejs 的十字路口来匹配路线。好吧,它可能与requirejs无关,只是想我会提到它。

这就是我的代码的样子:

require.config({
    shim: {
        /* use shims to define dependencies for modules. e.g.,
        'jquery.colorize': ['jquery'],
        'jquery.scroll': ['jquery'],
        */
        'crossroads': ['signals', 'can']
    },
    paths: {
        "jquery": "http://code.jquery.com/jquery-1.8.2",
        "can": "/scripts/can/amd/can",
        "can.fixture": "/scripts/can/amd/can/util/fixture",
        "signals": "/scripts/signals/signals",
        "crossroads": "/scripts/crossroads/crossroads"
    }
});

require(['jquery', 'crossroads', 'controllers/project'], function ($, crossroads, projectController) {
    var projectRoute = crossroads.addRoute('projects', function () {
        $(document).ready(function () {
            console.log('projects ready');
            $.when(ProjectModel.findAll()).then(function (projectResponse) {
                var projects = new SortList(projectResponse);
                console.log('doc ready projects=', projects);

                new ProjectsControl('#projects', {
                    projects: projects,
                    defaultSort: 'priority'
                });
            });
        });
    })
    console.log('matched: ', projectRoute.match(window.location.href));
});

它试图匹配的 urlhttp://localhost:34382/projects和 console.log 的输出是“matched: false”

有什么建议么?

4

1 回答 1

0

我发现我需要更改我匹配的内容。我改变了这条线

console.log('matched: ', projectRoute.match(window.location.href));

对此

console.log('matched: ', projectRoute.match(window.location.pathname + window.location.search));

现在它可以工作了。

还意识到您必须在某处显式调用 crossroads.parse() 才能使其工作(或者我错过了什么?)

所以在我的 require 函数结束时,我调用它并找到我的路线

crossroads.parse(window.location.pathname + window.location.search);

另外,如果有人想知道,我使用CanJS作为客户端 MVC 框架,使用 ASP.NET MVC4 作为服务器端。

于 2012-12-28T03:28:31.427 回答