2013-10-12 4 views
1

Я начал играть с AngularJS, и мне трудно понять директивы и область действия.Попытка понять концепцию AngularJS

Если я правильно понимаю, вы создаете директивы для создания повторно используемых компонентов, которые содержат поведение и логику для изменения DOM?

Так ли директивы получают услуги, вводимые в них?

Или вы используете контроллер с директивой, которая включает в себя услуги?

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

Есть ли хорошие учебные пособия, которые объясняют это простым способом?

+0

Услуги и заводы просто модели и являются способом хранения и совместного использования общедоступных методов, которые обеспечивают доступ и изменение частных данных. Поэтому, если вам нужно, чтобы контроллеры были просто нормальным контроллером или контроллерами в директиве для связи друг с другом или изменения одних и тех же данных, вы можете вводить одну и ту же услугу в каждый контроллер. – btm1

ответ

4

Вы можете ввести службу в директиву или контроллер. Одна вещь, которая мне помогла, заключалась в том, что только место манипуляции DOM должно происходить в директиве.

Контроллеры должны быть клеем между видами и услугами и в основном обрабатывать вид просмотра. Они должны быть тонкими

Услуги управляют логикой независимо от вида (и являются одноточечными).

Так что подумайте более декларативным, менее итеративным. В целом, представляйте состояние в моделях. Затем установите привязки, так что вы можете изменить модель и вид автоматически изменяет (From: http://www.youtube.com/watch?v=oJoAnVRIVQo)

Вы можете проверить канал YouTube Угловых команд: http://www.youtube.com/user/angularjs

А вот некоторые хорошие учебники: http://egghead.io

1

Службы предназначены для сохранения состояния по всему вашему приложению. - В большинстве случаев они будут существовать в ваших контроллерах - они могут быть введены в ваши директивы

Контроллеры предназначены для выполнения бизнес-логики и приложений с значениями, переданными из представления.

Директивы полезны для: - создание многократно используемые компоненты - добавление поведения в DOM или Forms http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController

Область является контекст, в приложении, что директива или контроллер имеет доступ. - с контроллерами область действия ограничена элементом DOM , которому он назначен, и его дочерними элементами. - с помощью директив область видимости может быть той же областью, что и область действия контроллера , или быть собственной областью (изолированной от всех других областей) или собственной областью , прототипически наследуемой от ее родительской области.

я рекомендую видео на http://egghead.io

1

Пытаясь понять концепцию AngularJS

Пожалуйста, ознакомьтесь с THIS ответ, написанный Джошем Дэвид Миллер.

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

Если я правильно понимаю, вы создаете директивы для создания повторно используемых компонентов, которые содержат поведение и логику для изменения DOM?

Директивы - самая сложная деталь в AngularJS (по крайней мере, для меня). Конечно вы можете сделать инъекцию Service на директивах, как:

app.directive('changeMe', ['$compile', 'myService', function($compile, myService){ 
    return { 
     restrict: 'CA', 
     link: function (scope, element, attrs) { 
      scope.value = myService.value; 
     } 
    } 
}]); 

услуг

Основным преимуществом услуг является то, что он предоставляет формальный механизм для повторного использования кода . Любая разделенная бизнес-логика может быть перенесена на обслуживание, чтобы улучшить ремонтопригодность вашего кода, избегая дублирования кода . Такие услуги, как утилиты, вы можете их захватить (все службы должны быть написаны в отдельном файле JS) и легко импортировать в другие проекты.

Смежные вопросы