5

AngularJS をいじり始めましたが、ネストされたサブビューへのルーティングに問題があります。

私のサイトには、次のような基本的な 2 列のレイアウトがあります。

[Main 1] [Main 2] [Main 3]
--------------------------------------
A | Content for A goes into this frame.
B |
C |
D |
E |

メイン メニュー (メイン 1、メイン 2、メイン 3) からページに移動すると、サイド メニュー リンク (a、b、c、d、e) が動的に生成されます。

つまり、main1 リンクに移動すると、リンク/main1の JSON 配列を返すリクエストが作成されます。

ユーザーがこれらのリンクの 1 つをクリックすると、要求が行わ/main1/aれ、データがコンテンツ フレームに読み込まれます。

私が現在これを行っている方法は次のとおりです。

index.html:

<body>
    <a href="/main1">Main 1</a>

    <div ng-view></div>
</body>

app.js:

angular.module('test', [
    'test.controllers'
])

.config([
    '$routeProvider',

    function($routeProvider)
    {
        $routeProvider
            .when('/main1', {
                templateUrl: '/partials/main1.html',
                controller:  'Main1Ctrl'
            })
            .when('/main1/:id', {
                templateUrl: '/partials/main1.html',
                controller:  'Main1Ctrl'
            })
    }
]);

そして、これは私が立ち往生するところです。私のMain1Ctrlコントローラーは現在次のようになっています。

angular.module('test.controllers', [])

.controller('Main1Ctrl', [
    '$scope',
    '$routeParams',
    'Data',

    function($scope, $routeParams, Data)
    {
        $scope.submenu = Data.query();
    }
]);

私が抱えている問題は、を割り当てる方法です$scope.content

URL に ID が指定されていない場合は、リストから最初の ID を取得する前に、サブメニューがレンダリングされるのを待つ必要があります (コンテンツが要求されていない場合は、デフォルトで最初のサブメニュー項目になります)。

ユーザーが URL で ID を指定した場合、/main1との/main1/:idリクエストが並行して発生するようにします。ユーザーがコンテンツを表示する前に、メニューが読み込まれるのを待つ必要はありません。

これは、このタイプのレイアウトを処理する良い方法ですか?

4

1 に答える 1

-1

ルート プロバイダーと変数を利用して、どこからでもアクセスできるグローバル オブジェクトを作成しました。その後、ng-show/hide、ng-switch、または ui-if を使用して、アプリケーションの該当するセクションを表示、非表示、または切り替えて、マルチレベルのディープ リンクを実現できます。

私が作ったこのプランカーをチェックしてください。それを行う方法を正確に示します。

http://plnkr.co/edit/beAm3WRomMafKzx1SoSZ?p=preview

于 2013-04-24T19:43:20.820 に答える