0

私のアプリは ngRoute で正常に動作しますが、パーツに (アドレス バーから) 直接アクセスしようとすると、パーツのみが返されます (メイン ページなし)。これらのパーツを直接アクセスできないようにするにはどうすればよいですか?

説明: 2 つのブロックを持つサイトがあります。1 つ目はメニュー、2 つ目はコンテンツ (私のルートの一部) です。メニューには「#/main」と「#/account」のリンクがあります。ボタンを押すと、正常に動作します (左側のメニューとコンテンツ)。しかし、URL を localhost:8080/#/account から localhost:8080/account に変更すると、メニューなしでコンテンツのみがレンダリングされます。localhost:8080/account へのアクセスを非表示にするか、メニュー付きのコンテンツをレンダリングするようにします。

4

1 に答える 1

1

問題は AngularJS のルーティングではなく、サーバーからのルーティングにある可能性が高いです。のようなページをリクエストすると、サーバーは「わかりました、ファイルlocalhost:8080/accountを配信しましょう」と言います。/accountしかし、実際にはアプリ全体をロードする必要があるため、これは正しくありません。これは一般的な問題であり、解決するのはそれほど悪くありません。

バックエンドがどのように見えるかはわかりませんが、express/node を使用した一般的な例を次に示します。

var express = require('express'),
  routes = require('./routes');

app.get('/', routes.index);
app.get('*', routes.index);

「バックエンドへのすべてのリクエストは、Angular アプリをロードするために、最初に完全なレイアウトをレンダリングする必要があります。その後、クライアント側のレンダリングが引き継がれます。」

ソース: http://fdietz.github.io/recipes-with-angular-js/backend-integration-with-node-express/implementing-client-side-routing.html

于 2015-08-12T21:50:29.423 に答える