2015-08-06 2 views
0

Привет Я новичок в Угловые и JS Framework в целом. Мне было интересно, может ли кто-нибудь помочь мне расшифровать некоторые из обозначений.AngularJS Аннотации вопросы

Из документов: https://docs.angularjs.org/guide/di

Инлайн Массив Аннотация

someModule.controller('MyController', ['$scope', 'greeter', function($scope, greeter) { 
    // ... 
}]); 

$ впрыснуть собственности Аннотация

var MyController = function($scope, greeter) { 
    // ... 
} 

MyController.$inject = ['$scope', 'greeter']; 

someModule.controller('MyController', MyController); 

Для моего обучения предпочтительным является метод $ inject, поскольку он более взорван. Я вижу три шага: 1) определяет функцию, 2) устанавливает зависимости, 3) присоединяется к родительскому модулю.

ОК, так что мои вопросы: Почему «$ scope» и «greeter» перечислены в качестве параметров функции, а затем введены инъекцией $? Разве это не было бы так или иначе?

someModule.controller ('MyController', MyController);

Почему MyController дважды упоминается как литерал? Это тип и токен? Можно ли так же легко:

someModule.controller ('MyInstanceOfMyController', MyController);

Спасибо за любую освещенность

ответ

0

Для моего образования $ метод инъекционных являются предпочтительной, поскольку это более взорвались. Я вижу три шага: 1) определить функцию, 2) ввести зависимости, 3) присоединить к родительскому модулю.

Я также предпочитаю эту нотацию, она читается лучше.

ОК, так что мои вопросы: Почему «$ Сфера» и «привратник» в списке параметров функции, а затем вводил с $ впрыснуть? Не так ли?

Это имеет смысл, вы сообщаете инжектору, что нужно вводить, а декларация функции принимает их как полезные параметры.

Вы можете изменить «greeter2 к„newGreeter“в форсунке, и вам не нужно будет обновить код функции для того, чтобы использовать новый модуль.

someModule.controller („MyController“, ? MyController);

Почему MyController в списке дважды один раз как буквальное это тип и маркер вещь Может так же легко было:

someModule?.контроллер («MyInstanceOfMyController», MyController);

Вид, вот вы говорите модуль 1) То, что контроллер называется 2) Какая функция определяет контроллер

Эти могут иметь такое же имя, но у них нет к.

+0

Спасибо. Я понял все ваши ответы :) В этом последнем пункте «1», что называется контроллером ». Правильно ли было бы сказать: «Это то, что я хочу назвать контроллером внутри« someModule »? – user1394502

+0

« Это имеет смысл, вы говорите инжектору, что вводить, а декларация функции принимает их в качестве используемых параметров » Хотя я понимаю, что вы говорите, я еще не уверен, что это имеет смысл для меня. Передача чего-то в функцию в качестве параметра делает его доступным внутри этой функции .... так что wtf делает «инъекции»? Почему? «Это похоже на ссылку на библиотеку, почему она также должна быть параметром? – user1394502

+0

Ваш первый комментарий - да, это имя, которое ссылается на него в' someModule'. – Starscream1984

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