問題タブ [route-provider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - ajax 呼び出し応答の $locationChangeStart / $routeChangeSuccess の停止。リゾルブのグローバル追加
ルートを変更するたびに、ユーザーがログインしているかどうかを確認する必要があります。そうでない場合は、ユーザーをログインページにリダイレクトする必要があります。それ以外の場合は、ページを表示します。
私は ng-view への親コントローラーを持っています:
ユーザーがログインしているかどうかを確認する必要があるためall the the route changes, I needed to add the check globally.
そこで、次のように init コントローラーにチェックを追加しようとしました。
このアプローチの問題点は次のとおりです。
ルートが変更されると、それまでに ajax 呼び出しの成功が受信されず、js が ajax 呼び出しの応答を待機しないため、ページが 1 ~ 2 秒間読み込まれます。次に、受信して失敗すると、ページはログインにリダイレクトされます。
また、$locationChangeStart の先頭に追加することはできませんevent.preventdefault()
。これは、サイト全体を無限ループで送信するためです。
私は欲しい:
- ajax 呼び出し応答が受信されない限り、場所の変更を停止する何らかの方法。
- app.js の routeProvider の各 $route に解決を手動で追加することなく、このチェックをすべての場所の変更に追加する方法。
angularjs - AngularJs - 「メニューの展開」を無効にしないとルート変更をキャンセルできない
絵:
HTML:
展開メニュー コード:
一部のデータ:
Route Provider が「そうでなければ」それを行う:
シナリオ[問題:]
受信トレイ ページでグラフ メニューをクリックすると、選択肢をクリックする前にビューがデフォルトのダッシュボード ページに戻ります。
$locationChangeStart で Default を防止しようとしましたが、それによってメニューが拡張されなくなり、サブメニューが表示されます。
私が望むもの: クリックしたページ (この場合は受信トレイ ページ) にとどまるには、サブメニュー (グラフなど) を持つ他のメニュー項目をクリックし、ビューが現在の受信トレイ ビューから移動しないようにします。
少し早いですがお礼を
javascript - Angular js - $routeProvider - routeChangeStart で解決する方法
私は Angular のドキュメントを読んでい$routeProvider
ますが、パラメーターには次のように書かれています:
resolve
- {Object.=} - コントローラーに注入する必要がある依存関係のオプションのマップ。これらの依存関係のいずれかが promise である場合、ルーターは、コントローラーがインスタンス化される前に、それらがすべて解決されるか、1 つが拒否されるのを待ちます。すべてのプロミスが正常に解決された場合、解決されたプロミスの値が注入され、$routeChangeSuccess イベントが発生します。promise のいずれかが拒否された場合、$routeChangeError
イベントが発生します。マップ オブジェクトは次のとおりです。
key
– {string}: コントローラーに注入される依存関係の名前。factory - {string|function}: 文字列の場合、サービスのエイリアスです。それ以外の場合は、関数が注入され、戻り値が依存関係として扱われます。結果が promise である場合、その値がコントローラーに注入される前に解決されます。ngRoute.$routeParams は、これらの解決関数内の以前のルートを引き続き参照することに注意してください。代わりに、$route.current.params を使用して、新しいルート パラメーターにアクセスします。
whenの代わりにresolve
routeProvider を使用する方法はありますか?routeChangeStart
routeChangeSuccess
私の理由を説明するには、すべてのアプリの構成パラメーターを設定していて、できるだけ早くそれらにアクセスできるようにしたいので、routeChangeStart で解決を実行したいと思います。ChangeSuccess は後のステップです。
私のコードは実際にはとても単純です:
angularjs - AngularJS - Templates not working
I am using Restangular to create a simple API using MEAN stack.
Here is my code:
index.html
app.js
list.html
edit.html
server.js
The first page of my app loads perfectly fine. Here is the screenshot.
But when I click on either of the edit link it is supposed to load edit.html template. But it shows a blank page with no errors in console. Here is the screenshot.
I am unable to figure out what's wrong. Please help. Please ask if any other piece of code is needed. I added almost everything that I did. I know it is annoying and not recommended but I am not sure what part of my code is causing this issue.
EDIT 1:
My farthest guess is that the url for edit.html might not be getting resolved correctly. But I am not sure how to test that! Any help will be appriciated.
EDIT 2: Directory structure
SOLUTION : Courtesy @ashu
The issue was this line in index.html
It should be:
However, I am not clear why! Page was including app.js either way. It is weird.
angularjs - $routeProvider が正しく呼び出されない
アプリケーション内で使用しているルート プロバイダーに少し行き詰まっています。私はこれらすべてを醜くするためにうなり声を使用しているので、それがその一部であるかどうか疑問に思い始めていますか?
とにかく、app.config を使用したいくつかのコード サンプル:
コントローラー (当面は app.js にあります)
app.run の間、私はこれを呼び出しています:
出力しているのは
$routeProvider が実際にヒットしたかどうかを確認する簡単なテストとして、(home1) を実行しました。
それ以外の場合は正しくヒットし、URLを /default に変更しました
ルート サービスをダンプすると、現在のルートは正しく設定されていますが、テンプレート (テスト済みで何も表示されていませんが空です) もそのルートのコントローラーも読み込まれていないことがわかります。正しくないコントローラーがロードされました。
これについて何か考えはありますか?
クイック編集:私もhtmlを使用しています
angularjs - AngularJS RouteProvider と ExpressJS sendfile
私の Angular アプリでは、ユーザーがリンクをクリックしたときにインデックス ページに読み込まれるパーシャルをレンダリングしようとしています。次のコードで以前はうまくいきました:
しかし、Express を追加すると機能しません。
インデックスページを表示したいだけなら、これでうまくいきます。ただし、次のコードを追加すると、(部分的な) プレーンな HTML が表示されますが、CSS や Javascript は表示されません。
Angular で動作するように Express でパーシャルをレンダリングするにはどうすればよいですか? get()、render、sendfile の Express API を調べてみましたが、私の状況ではあまり役に立ちませんでした。他のユーザーは以前にここで同様の質問をしましたが、通常、Express がルーティングする別のファイルが関係しています。Express を含めるファイルを追加するだけで既に問題が発生しているため、余分なファイルを追加せずにそれを実行できるかどうか疑問に思っています。
currentFile.html は、CSS または Javascript 自体をロードしません。Express を追加する前は、すべてのエクストラをロードした index.html にロードされたパーシャルでした。
どんな助けでも大歓迎です。ありがとうございました
angularjs - config ブロックの $routeprovider resolve の jasmine テスト
モジュール構成ブロックに以下があります。
仕様ファイル:
ただし、テストの実行中に次のエラーが発生します。
私のカルマ設定には angular-route.min.js ファイルが含まれています。どんな提案も役に立ちます。
angularjs - angularjsで302ステータスコードを処理する
私のアプリには、302 を使用してユーザーをログイン ビューにリダイレクトする認証メカニズムがあります。
クライアント側は angularjs です。$routeProvider を使用して URL をビューにマップします。ここで、リンク (ルート プロバイダーのビューにバインドされている) をクリックし、ユーザーが認証されていない場合、ログイン画面にリダイレクトしたいと考えています。
ただし、これの代わりに、ログイン画面のコンテンツが呼び出しページに埋め込まれます。302 ステータス コードを受信したときにリダイレクトする方法はありますか?