更新: @ dnc253 -- angular-detour の準備が整ったので、これを使用して json からロードされたルートを取得できると思います。まだ十分に文書化されておらず、テストも行われていないため、その意味では完全ではありませんが、ルーターのライブ インスタンスへの json のマージはしばらくの間機能しています。
サーバー定義のルートを使用する方法をまだ探している場合は、サンプルの実行に関する説明を読んでから、 app.jsで 3 番目のサンプルのmergeJson 呼び出しを確認してください。フィードバックをいただければ幸いです。現在、実際のドキュメント/テストを開始しているので、ドキュメントがひどいものであり、テストがないことを伝える必要はありません。:) この機能がまだニーズのリストにある場合は、サンプルがきしむのに十分であることを願っています.
回答の古い部分: JSON を使用してサーバーによって定義されたルートの静的セットが必要な場合は、JQuery などを使用して、アプリを構成する前にルーティング データを取得できます。
擬似コード:
$.ajax({
url: "http://example.com/routes"
}
}).done(function ( data ) {
angular
.module('myApp',[])
.config(function($routeProvider) {
//read routing instructions from data and call "when" on $routeProvider to define the routes
});
});
これは ui-router でも機能するはずです。ただし、ルートの初期セットをフェッチすることしかできないため、データ駆動型の定義の可能性を提供しますが、アプリがクライアントによって読み込まれたときに利用可能だったデータによってのみ駆動されます。
eazel7 が指摘しているように、構成時にプロバイダーにバインドする独自のサービスを作成すると、実行時にプロバイダーにアクセスできます 。ただし、やりたいことを行うには、プロセスの外に出て $http 呼び出しを行う必要があり、現在のルーター (在庫の Angular コアと ui-router) では、時間内に応答を取得できません。誰かがあなたのサイトにアクセスすると、ディープリンクの前のルーターが失敗します。さらに、これらのルーターはどちらも機能を使用してルーティング「テーブル」にデータを入力するため、最初に構成された後にルーティングを更新することはできません。
要求されたルートがルーターに認識されていない場合、フォールバック ルートを呼び出すか失敗する前に、サーバーから取得しようとするなど、これらの問題に対処するために取り組んでいます。また、既知のルートへの変更のチェックもサポートします。サーバーへの AJAX/JSON インターフェイスを使用した本質的に遅延ルーティング。これは ui-router に基づいており、https://github.com/afterglowtech/angular-detourにあります。現在、ルートの編集可能性を実装していますが、怠惰/サーバー通信の部分は行っていません。それは私のリストの次です。それを監視してください、それはあなたが探していることをすることになるはずです。