1

#/my に移動すると #/folder/62 (または変数に格納されている ID) の内容が表示され、 #/public に移動すると #/folder/1 の内容が表示されるようにルーティングを構成しようとしています (同じコンセプト)。

さらに、ユーザーが認証されているかどうかに応じて、アプリケーションがロード時にこれらのルートのいずれかに移動するようにしたいと考えています。認証は完了しましたが、上記のルートが構成されたら、そのうちの 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
        }
    }
4

1 に答える 1

2

app.setRoothttps://groups.google.com/forum/#!searchin/durandaljs/app.setRoot/durandaljs/t1hrLfOh1oM/RtCekmY0bDAJで説明されているように、認証済み/非認証ユーザーのさまざまなビューを表示するために使用できます。

この例の「folder/specialID」の内容を、認証されたユーザーだけが閲覧できるようにする必要がある場合は、これらをルーター経由で公開しないことを検討してください。代わりに、#my で標準の構成機能を使用して、specialID ビュー/ビュー モデルを読み込みます。

于 2013-05-20T11:35:07.737 に答える