2015-07-01 3 views
0

Я действительно новичок в AngularJS, и я не знаю лучших практик, поэтому вот мой вопрос.Правильное использование свойств области с родителями

Каково рекомендуемое использование свойств контроллеров родителей? Должен ли я использовать разные псевдонимы через весь webapp или есть другой способ использования vars и методов родительского контроллера?

Я использую partials html и, кажется, может сбивать с толку, см. UserCtrl.doЧто-то, когда у частичного объявления нет объявления userCtrl (потому что его объявление на частичном, которое включает этот).

Заранее благодарен!

+1

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

ответ

0

Вам следует избегать использования $ parent и переменных области видимости, которые не объявлены в вашем контроллере.

Почему? Потому что, если вы его используете, ваш контроллер будет напрямую зависеть от того, где вы его создали (ng-controller). Поэтому вы не будете уважать шаблон MVC. Ваши контроллеры не должны зависеть от вида.

Ваш контролер не должен знать, что такое его родители. Потому что вы можете это сделать, это не значит, что вы должны это делать.

Чтобы обмениваться данными между контроллерами, вместо этого используйте Службы. Это проще и чище.

+0

Хорошо, я могу поделиться службами данных whit, но что, если мне нужно вызвать метод области родительского контроллера? –

+0

** Услуги также могут хранить функции **. И если вам действительно нужен этот метод на контроллере (если этот метод не может быть в одноэлементном (услуге) и действительно зависит от экземпляра контроллера), вы можете использовать ** угловые события **. Но услуги всегда должны быть первым, что вы имеете в виду: инъекция угловой зависимости - очень хороший инструмент. –

+0

Думаю, я понимаю. Например, для управления пользователем вошел в систему, у меня должна быть служба со всем, что мне нужно, и вставлять ее во все контроллеры, в которых я нуждаюсь, и в контроллерах выставлять на просмотр что-то вроде: $ scope.user = UserService.getUser (); –