2013-02-09 9 views
2

Я смотрю Angular API reference. Он говорит, что ngController директива, и дать следующий пример:.Как AngularJS распознает функцию в качестве директивы контроллера

function SettingsController($scope) { 
$scope.name = "John Smith"; 
} 

Это выглядит точно так же, как простая функция Javascript, с аргументом $ рамки принятой в Я думал, чтобы определить директивы, мы должны назвать:

app.directive("name", func()) 

Угловая обрабатывает любую функцию с аргументом $ scope в качестве директивы контроллера? Или только если мы модифицируем элемент DOM, чтобы включить ng-controller = "SettingsController", который SettingsController будет интерпретироваться как таковой?

ответ

2

ngController является директивой (директивы всегда упоминаются в DOM - Angular позволяет указывать директивы через имена тегов, атрибуты, имена классов и комментарии). Директива ngController написана так, что она создаст экземпляр контроллера на основе имени, которое передается в директиву (в этом случае строка "SettingsController". Сама функция не является директивой.

+0

Спасибо, что освободил мое заблуждение. , если я могу передать любую функцию в директиву, какая разница между простой JS-функцией, как указано выше, и 'myApp.controller (« SettingsController », function() {})'? – AdamNYC

+1

Нет проблем! И никакой разницы. Директива 'ngController' достаточно умен, чтобы найти функцию в глобальной области, но я лично * ненавижу * этот шаблон и * всегда * рекомендую, чтобы люди использовали' myApp.controller' для определения функций контроллера. –

+0

Отлично! Спасибо за рекомендацию. – AdamNYC