2013-05-14 6 views
5

私は角型アプリケーションを開発しており、簡単な質問があります。 「単一ページアプリケーション」はURLマッピングを「角度を引き継ぐ」ため、「/」 - >「/ about」などからナビゲートすることができ、ナビゲーションはすべて1ページでクライアント上で行われます。angle.js URL(直リンク/リフレッシュ/ etc)を修正するための「外部」ナビゲーション

私が理解しようとしているのは、クライアントナビゲーションがバイパスされたときに、クライアント上の正しいページに移動する方法です。たとえば、http://www.myapp.comに行くのではなく、「約」をクリックして「http://www.myapp.com/about」に行くと、ユーザーは「http://www.myapp.com/about」に直接行くのをどうやって処理するのですか、私は明らかにそれらを「/」にリダイレクトできますが、それが彼らが期待しているように、「/約」で終わるように。同様に、リフレッシュにも同じ問題があります。私が '/ about'に座ってブラウザをリフレッシュすると、そのリクエストはサーバー上で '/ about'になり、アプリをバイパスしているので、再びルートにアプリをリロードする必要がありますそれを/ aboutに戻します。

ありがとうございました。

編集: 回答ありがとうございました。質問を明確にしていない可能性があります。私は、私の角型アプリケーション内のルーティングなどを理解しています。したがって、 '/ about' hrefがクリックされたときにload 'partials/about.html'と設定するように設定します。私の問題は、それがすでに機能していると仮定すると、ユーザーは「www.myapp.com/about」に直接行きます。角度適用はルート上に「生きる」。おそらく、サーバーは '/'へのリダイレクトを行います。それはアプリをロードしますが、ユーザーが期待したルートに角度を設定しません。だから、質問は、おそらく参照するか、何かに基づいてアプリを "ロードすると、/ about"に行くと言っています。

答えて

1

あなたはどのサーバーを使用していますか?

ルータでキャッチオールルートを作成できます。ないサーバー側 -

または

app.use(function (req, res) { 
    res.writeHeader(200, {'Content-Type': 'text/html'}); 
    res.end(indexFileContent); 
}); 
+0

実際にはnode.jsを使用しています。しかし、この例では、正しいURLにユーザーを戻しますか?それがメインページに戻ってきて、それらに戻ってくるでしょうか?もう一度、 '/ about'を '/'にリダイレクトするようにリクエストする必要があり、何らかの理由でユーザーが '実際に'/about 'であることをAngularに伝える必要があります。 –

+1

[OK]私は位置情報サービスなどを読みましたが、あなたの答えと同じように今まではクリックしていませんでした。すべてのURLまたは少なくともすべての 'アプリケーション' URL(私は安らかなサービスの/ apiルートを持っています)を置くだけでルート角度ページが提供され、角度がロードされたときの位置を把握することができます。 ありがとう! –

+0

あなたを助けてくれてうれしいよ:)。 – Ven

0

私はあなたが角度でクライアント側のルーティングについて話していると思います(表現)match '*' => 'Angular#App'(レール)のように。とにかく、私の答えはこれを仮定しています。

Angularには、ベースサーバのURLの後ろにあるurlにマップするクライアントサイドルートを定義できるルーティングサービスが含まれています。ここでは、それを設定する方法の例です:ユーザーが各URLに移動したときに、あなたも、サーバー側のパーシャル設定とコントローラのセットアップを持って提供

angular.module('myApp',[]) 
.config(['$routeProvider', function($routeProvider) { 
    $routeProvider 
     .when('/', {templateUrl: '/home-partial', controller: 'HomeCtrl'}) 
     .when('/about', {templateUrl: '/about-partial', controller: 'AboutCtrl'}) 
     .when('/contact', {templateUrl: '/contact-partial', controller: 'ContactCtrl'}) 
     .otherwise({redirectTo: '/'}); 
    }]) 

は、正しいコントローラおよび部分は次のようになりますプルアップされ、それぞれのコントローラーで必要なものを選ぶことができます。

他にも使用できるオプションがあります。この方法でルートを使用するだけです。詳細については、AngularJS documentationを参照してください。