2013-03-27 5 views
0

Я (очень) недавно нырнул в Angular, но я немного борюсь с тем, как спроектировать мой макет.AngularJS: кнопки меню «Глобальные» для нескольких видов.

Для моего сайта я создал меню, содержащее поле ввода и некоторые кнопки. Идея состоит в том, что поле ввода в сочетании с любой из кнопок должно обслуживать функцию. Так что для viewA, поле ввода должно действовать только как панель поиска. Если пользователь, однако, нажимает одну из кнопок, значение поля ввода следует использовать в качестве основы для создания нового элемента в другом представлении B.

Функция поиска отлично работает для viewA, но я не могу заставить кнопки переключаться между видами. Я подозреваю (или знаю, но не знаю, как его решить), потому что упомянутые кнопки находятся за пределами представления (ng-view) и, следовательно, не имеют контроллера.

Я искал вокруг «несколько контроллеров/представлений», где предложения варьируются от использования функции include или создания службы. Проблема в том, что я понятия не имею, что лучше всего практиковать или если это даже необходимо для моего дела.

ответ

1

Меню + поле ввода - это другой вид. Он должен иметь свой собственный контроллер. На основе маршрута – $on($routeChangeSuccess, ...) – вы можете использовать ng-switch для переключения между соответствующим HTML/шаблоном в этом представлении. Если ваши шаблоны большие, вы можете использовать ng-include внутри директив ng-switch. В противном случае не беспокойтесь и просто вставьте HTML внутри каждого ng-switch-when.

Для примера того, как так использовать $ routeChangeSuccess (но не нг-переключатель), см https://stackoverflow.com/a/11910904/215945

+0

Взял меня некоторое время, чтобы понять решение вы предложили, но, наконец, получил это работает. Благодарю. –

+0

@KGChristensen, я попытался немного обновить ответ. В следующий раз, не стесняйтесь просить больше разъяснений или примеров, если я слишком краток. –

+0

Отлично. Еще раз спасибо :) –