Durandal Routing - маршрутизация к ресурсу с определенным идентификатором?

Я пытаюсь настроить маршрутизацию так, чтобы при переходе к #/my отображалось содержимое для #/folder/62 (или какой-либо идентификатор, хранящийся в переменной), а при переходе к #/public отображалось содержимое для #/folder/1 ( такое же понятие).

Кроме того, я хотел бы, чтобы приложение переходило к одному из этих маршрутов при загрузке, в зависимости от того, аутентифицирован ли пользователь. Проверка подлинности завершена, но после настройки указанных выше маршрутов я хочу активировать один из них.

Вот что у меня есть:

        activate: function () {
        router.useConvention();
        router.handleInvalidRoute = function (route, params) {
            //debugger;
            logger.logError("Invalid route", route, null, true);
        };

        router.map([                
            { url: 'home', moduleId: 'viewmodels/home', name: 'Home', visible: false },               
            { url: 'my', moduleId: 'viewmodels/folder', name: 'My Content', visible: false }, // Should display contents of /folder/2
            { url: 'public', moduleId: 'viewmodels/folder', name: 'Public Content', visible: false }, // Should display contents of /folder/3
            { url: 'set/:id', moduleId: 'viewmodels/set', name: 'Set', visible: false },
            { url: 'folder/:id', moduleId: 'viewmodels/folder', name: 'Folder', visible: false }
        ]);

        if (auth.isAuthenticated)
            return router.activate('my'); // should show details page of a particular folder
        else {
            return router.activate('public'); // should show details page of a particular folder
        }
    }

person RobVious    schedule 19.05.2013    source источник


Ответы (1)


app.setRoot как описано в https://groups.google.com/forum/#!searchin/durandaljs/app.setRoot/durandaljs/t1hrLfOh1oM/RtCekmY0bDAJ можно использовать для отображения разных представлений для аутентифицированных и неаутентифицированных пользователей.

Если только аутентифицированным пользователям должно быть разрешено видеть содержимое «папки/специального идентификатора» в примере, вы можете подумать о том, чтобы не выставлять их через маршрутизатор. Используйте стандартную функциональность компоновки в #my, чтобы вместо этого загрузить представление/модель представления specialID.

person RainerAtSpirit    schedule 20.05.2013
comment
Спасибо Райнер. Я хотел бы условно активировать, если это возможно ... корень был установлен на оболочку, и я не хочу это менять. Кроме того, какие-либо идеи относительно первой части моего вопроса? Как я могу настроить свое приложение так, чтобы при переходе к /folder/my в браузере отображалось /folder/23 (но текст оставался в URL-адресе, а не в идентификаторе)? - person SB2055; 20.05.2013