2

プロジェクトをAngularベースのSPAに移植することに取り組んでいます。現在、サーバー側からテンプレートを提供する、より「伝統的な」ノード/ロコモティブjsアプリです(これに対する適切な用語は知られていません)。

一度にすべてを移行するにはプロジェクトが大きすぎるため、一度に 1 ページずつ角度付きに変換しています。

私の問題: アプリの角度部分をロードすると、すべて正常に動作します。角度のあるルートに正しく行くことができます。ただし、非角度ルート (サーバー側で処理する必要があります) に移動すると、何も読み込まれません (まったく新しいテンプレートが読み込まれるのではなく、ng-view が空白になります)。最初にサーバー側のルートに移動するか、更新を押すと、ページが正しく読み込まれます。

私の推測では、Angular はこれらのルートを処理しようとしており、サーバーに引き継がせる方法がわかりません。

app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
  $locationProvider.html5Mode(true);
  $routeProvider.when('/something/page1', {
    templateUrl: '/page1.html',
    controller: 'page1Ctrl'
  });
  $routeProvider.when('/something/page1/subpage', {
    templateUrl: '/subpage.html',
    controller: 'subpageCtrl'
  });
}]);

これは私のAngular routeProviderです。「それ以外」の指定はありません。サーバー側には次のようなものがあります:

this.match( '/someOtherPage', 'someOtherPage#showstuff');

/someOtherPage に直接アクセスすると、サーバー側から正しく読み込まれます。/something/page1 に移動してから /someOtherPage に移動すると、サーバーに接続していないようです。

4

1 に答える 1

8

angular html 5モードを使用しているため、angularは、angularで処理するルートとそうでないルートの違いを判断できません。特定のルートを無視するようにangularに指示する必要があると思います。これがあなたが探しているもののようです:

https://docs.angularjs.org/guide/$location#html-link-rewriting

そのため、角度のないページへのリンクを変更して、target.

元。<a href="/ext/link?a=b" target="_self">link</a>

于 2014-08-18T22:36:50.243 に答える