Google のホームページ機能を Angular で複製したいのですが、残念です。私は Egghead のビデオを見て、API 全体を読みましたが、その正確な動作の特定の例はありません。私がやりたいことは次のとおりです。
- ユーザーがホームページにアクセスすると、メインの検索バーが表示され、一般的な黒いヘッダー バーが表示されます
- ユーザーが何かを検索し、「検索」を押したときにのみメインの検索バーが消え、URL が mysite.com/q/searchTerm に変わり、新しいサブヘッダーが Google のホームページと同じように黒いヘッダー バーの下に表示されます。メインの検索フィールドが削除され、メインのヘッダー バーの下の灰色がかったバーに配置されます (インスタント検索をオフにしている場合)。
- 検索結果は、Google と同じように、なくなったメイン検索バーの代わりに表示されますが、この部分はルートとビューで処理できます。2 つの同一のコントローラー間のレイアウトの切り替えが気になります。
これまでに試したことは次のとおりです。
- 両方の MainCtrl サブ コントローラーの親コントローラーを作成し、その scope.data = {searchHeaderDisplay: false} を設定します。
- まったく同じ機能を共有するため、両方のサブ コントローラーに同じ名前 (MainCtrl) を共有させます。
- ヘッダーバーの ng-show="data.searchHeaderDisplay" とメインの ng-hide="data.searchHeaderDisplay" を作成し、検索ボタンの ng-click で data.searchHeaderDisplay を切り替えてみてください。これは機能しませんでした。効果はありませんでした。
私はまだ AngularJS に慣れてきているので、非常に単純であると確信しています。学ぶために実用的な例が 1 つまたは 2 つ必要なだけです。
編集: セカンダリ ヘッダー (検索フィールドが小さい) を検索結果と共に別のビュー テンプレートに押し込み、ルート ビューだけをメインの検索フィールドにする方がよいでしょうか? ドキュメントは、ビューとルート、特に何かを実行する複数のコントローラーを持つルートに関するベスト プラクティスについて非常に緩いです。