問題タブ [angularjs-routing]
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.
javascript - AngularJS:ルートからダイアログをポップアップしますか?
AngularJS を利用した管理 CRUD インターフェイスがあります。1 つの問題を除いてすべて問題ありません。アイテムを編集/作成するためのポップアップ ダイアログが必要で、ng-view 全体を置き換えないようにルートを作成できません。それはどのように行われ、それは可能ですか?そうでない場合は、ルートを実行する別の方法をどうにかして定義できますか?
angularjs - angularjs ルートの単体テスト
ここhttp://docs.angularjs.org/tutorial/step_07にあるように、
ルーティング テストは e2e テストで行うことをお勧めします。
ただし、「$routeProvider」構成は単一の関数 function($routeProvider) で行われると思います。ルーティング機能はブラウザー DOM を必要としないため、ブラウザーを使用せずに単体テストを実行できるはずです。
たとえば、
url が /foo の場合、templateUrl は /partials/foo.html である必要があり、コントローラーは FooCtrl である
必要があり、URL が /bar である場合、templateUrl は /partials/bar.html である必要があり、コントローラーは BarCtrl である必要があります。
これは単純な関数 IMO であり、単純なテスト、単体テストでもテストする必要があります。
この $routeProvider 単体テストをグーグルで検索しましたが、まだ運がありません。
https://github.com/angular/angular.js/blob/master/test/ng/routeSpec.js . _
ajax - 1 つのサイトに複数の AngularJS アプリを持っていますか?
少数のメイン ページに分割できるサイトを開発しています。これらのページは、セッション データ (つまり、セッション ID とログイン ユーザー名) を共有することを除いて、互いに分離されていると考えることができます。
最初は、ng-view を使用してサイトを SPA として構築するつもりでした (つまり、ページを AngularJS ビューにします)。しかし、私のサイトがそのように実装されても、何のメリットもありません。また、SEO ( AJAX アプリケーションをクロール可能にする)をサポートするには、余分な時間と労力が必要になります。
何の利益ももたらさず、余分な作業負荷を生み出すアプローチを採用することは、あまり賢明ではないようです。そこで、自分のサイトのメイン ページを個別の AngularJS アプリにしたらどうだろうと考えました。検索エンジンにインデックスを付ける必要があるサイトの部分は、それらのアプリの最初の画面にすぎないので、SEO のために余分な作業を行う必要はありません。(注: 最初の画面は、検索エンジンがクロールするデータを含む Django サーバーによってレンダリングされるため、空白ではありません。)
アプリごとに、要件に応じて、独自のパーシャルのセットがある場合とない場合があります。
例:
これは単なる私の勝手な考えであり、複数の AngularJS アプリで構成される AngularJS の例は見たことがありません。私が知りたいのですが:
- 1 つのサイト アプローチに対して複数の AngularJS アプリを使用することは可能ですか? 知っておくべき注意事項は何ですか? このアプローチを採用しているサイトの例はありますか?
- 可能であれば、アプリ間でセッション データを共有するにはどうすればよいですか?
この投稿は、1 つのサイトの複数の AngularJS アプリに関するものであり、同じページ上の複数の AngularJS アプリに関するものではないことに注意してください。
angularjs - Angular - 異なるルート、同じテンプレート/コントローラー、異なる読み込み方法
ルートを使用したいのですが、常に同じテンプレートとコントローラーを使用したいです。次のようなルートがあります。
と
最初のケースでは、画像の配列をロードしてリストに追加したいと考えています。2 番目のケースでは、1 つの画像を読み込んでリストに追加します。
したがって、違いはデータのロードのみです。これを行う最も効率的な方法は何ですか?
また、ng-show をアニメーション化することは可能ですか? jQueryのslideDownのようなもの?
angularjs - AngularJS: スコープを失わずにルーティングを行う複数のビュー
古典的なリスト/詳細 UI を実装しようとしています。リスト内のアイテムをクリックすると、リストを表示したままそのアイテムの編集フォームを表示したい。私は Angular の 1 ページあたり 1 ビューの制限を回避しようとしており、すべての URL を同じコントローラー/ビューにルーティングすることでそれを行うことにしました。(おそらくこれが私の問題の根源であり、私は代替手段を受け入れています。)
ルーティング:
ビュー (/Partials/Users.html):
コントローラ:
問題:
- 編集リンクをクリックすると、コントローラーが新しいスコープで再インスタンス化されるため、ユーザー リストを再初期化する必要があります。(より複雑な例では、ユーザーからの入力をモデルにバインドして保存することができ、これも失われます。) 前のルートからのスコープを保持したいと思います。
- 別のコントローラーを使用することをお勧めします (または、他の多くの Angular 開発者が不満を言っているように、複数の表示ビューを持つ機能!) が、スコープを失うという同じ問題につながります。
architecture - 雑誌リーダー アプリで AngularJS を使用する方法
このようなアプリを作るためにAngularJSを学んでいます。
サンプル サイトでは、雑誌の 1 つの号のグローバル JS オブジェクトを使用してそのページを管理し、クリック ハンドラーを使用してページの切り替えやその他の操作を処理します。また、ページはめ込み効果は、JS コードを直接呼び出すことによってトリガーされます。
これを AngularJS で実装するとき、しかし、アーキテクチャがどのようになるかについて混乱しています...
現在IssueDetailController
、応答するのは 1 つだけです。'/:issueId/:pageNumber'
コントローラー内で、ページのコンテンツが DOM のように注入されます$compile(page_content)(new_scope_for_page_content)
。正しい方法ではないと感じています。
だから私の質問は、次のような賢明なアーキテクチャとは何かということです。
- コントローラー/ビューの構造 (ページと課題用に 2 つの別個のコントローラーが必要ですか。たとえば)
- ページの遷移 (コントローラー/ビュー全体がまだわかりにくいため、どの時点
ng-animate
またはカスタム ディレクティブ (たとえば、この jQuery プラグインをラップする) を適用できるかわかりません。)
、例のようなアプリの場合、一般的に? ヒントをいただければ幸いです =)
angularjs - angular-ui ブートストラップ アコーディオン グループを html5mode で機能させるにはどうすればよいですか
構成モジュールで html5mode を true に有効にすると、アコーディオン グループを開く「ハイパーリンク」が URL をベース URL に再ルーティングします。アコーディオン グループが開かないだけでなく、ルートが変更されます。html5mode が有効になっていないときに、アコーディオン グループが正常に動作していました。
これに対する簡単な修正はありますか、それとも angularjs-ui ソースに深く入り込む必要がありますか? それとも、私は html5mode で運が悪いのでしょうか? 私のアコーディオン コードは非常に単純です。
angularjs - angularjs:タブ付きビューのデザインの問題
[編集]
パーシャルとテンプレートの複雑なネストと同様の質問
今のところ、Angular-UI 状態ソリューションを使用する方が良いですか、それとも ng-includes に固執する必要がありますか?
これまでのところ、AngularJS アプリケーションでは URL ごとに 1 つのビューがありました。新しいビューを作成する必要があります。これには 3 つのタブが必要ですが、ビューをどのように設計するかを理解するのに苦労しています。つまり、アーキテクチャに関してです。
これら 3 つのタブの背後にあるビジネス モデル オブジェクトは同じものであることに注意してください。
最初のタブは、ビジネス オブジェクトのデータを表示および編集するためのものです。つまり、最初のタブにはすでに 2 つの「ビュー」があります。
2 番目のタブは、ビジネス オブジェクトの子コレクションからのデータを示すページ テーブルを表示するためのものです。
3 番目のタブは 2 番目のタブと同じことを行いますが、別の子コレクションを対象としています。
明らかに、ビジネス オブジェクト全体を一度にロードしたくありません。ユーザーが 2 番目または 3 番目のタブに移動した場合にのみ、コレクションを読み込みます。
現在の私の主な関心事は、ビューをどのように整理するかということです。AngularJS には、ページごとに 1 ビューのみという制限があります。
また、ブラウザーの履歴を処理する必要があるため、タブが選択されたときに URL を変更する必要がありますが、データを再読み込みする必要があります (つまり、コントローラーを再読み込みしてはなりません)。
どんなヒントでも大歓迎です。
angularjs - angularjs ルーティングは、スーパーフィッシュ メニューのアンカー要素をキャプチャします
スーパーフィッシュメニューと組み合わせてルーティングでangularjsを使用しようとしています。私の Web アプリケーションは MVC アプリケーションであり、Superfish メニューを使用して Web アプリケーション内をナビゲートしています。superfish メニューには、MVC アプリケーションの他のビューに移動できるリンクが含まれています。
これらのビューの 1 つは、ルーティングを使用する角度のあるアプリです。しかし、このAngularアプリがロードされた後、Angularがそれらをインターセプトし、Angularルーティングで処理する必要があると考えるため、私のスーパーフィッシュメニューはもう機能しません.
angularjs にスーパーフィッシュ メニューのアンカー リンクを無視させる方法はありますか? この MVC アプリケーションに角度を徐々に導入しているため、完全な MVC アプリケーションを SPA にリファクタリングすることはできません (大きすぎて一度に変換できません)。
ドキュメントにあるように、各アンカー target="_self" を配置しようとしましたが、いくつかの機会に、角度によってキャプチャされます (おそらく、一部のスーパーフィッシュ メニュー項目には href の「#」のみが含まれているためです (それらは親メニューであり、サブメニュー)