2016-02-03 5 views
-2

В следующем фрагменте я не могу понять несколько основных деталей. Когда вы объявляете функцию, между круглыми скобками вы помещаете обычно заполнители. В этом случае $scope является заполнителем. Но и зарезервированное слово.

var messages = {}; 
messages.someText = 'You have started your journey.'; 
function TextController($scope) { 
    $scope.messages = messages; 
} 

Почему бы не писать просто

function TextController() { 
    $scope.messages = messages; 
} 

Где делает $scope аргумент родом? Кто его испускает?

Благодаря

+2

Вы вообще не читаете какую-либо документацию на угловом? Прыгать в код хорошо, задавать вопросы отлично, но сначала чтение базовой документации на языке еще лучше. Https: //docs.angularjs.org/guide/scope, а переменные «между круглыми скобками» не являются «заполнителями», они обычно упоминаются как аргументы. Вы передаете параметры функции, чтобы использовать их, а не использовать глобальные переменные, которые могут быть беспорядочными. – scrappedcola

+0

Согласен с @scrappedcola. Вам нужно ознакомиться с основными функциями angularjs, как это работает ... в зависимости от шаблона MVVM. Попробуйте посмотреть это, чтобы получить базовое понимание углового - [AngularJs в 60мин] (http://weblogs.asp.net/dwahlin/angularjs-in-60-ish-minutes-the-ebook). –

+0

Спасибо, ребята, на самом деле код исходит из книги под названием AngularJs от Брэда Грина (и Шьяма Сешадри). – Manaus

ответ

3

$scope не является глобальной переменной, поэтому синтаксис будет выдавать ошибку.

Пожалуйста, посмотрите на то, как Dependency Injection работы в угловом:

DI является широко распространенным по всей Угловым. Вы можете использовать его при определении компонентов или при предоставлении блоков запуска и конфигурации для модуля.

Угловой знает, когда вводить аргументы в свою функцию, когда ваши функции являются такими угловыми компонентами, как службы, директивы, фильтры и т. Д .; поэтому, когда Angular видит, что вы получили функцию контроллера с $scope в своем объявлении, он знает, что нужно ввести правильный $scope, когда он его вызовет.

Обратите внимание, что в вашем коде вы не сможете найти $ scope, потому что используете его в обычной функции, а не в каком-то угловом компоненте. Я подозреваю, что вы пропустили некоторые угловые основы, поэтому вам следует изучить еще несколько а, тогда вы поймете проблему в своем коде, который является основным угловым.

0

Это вызовет ошибку. I подумайте, что вы должны объявить ее в контроллере следующим образом: angular.module ('myApp'). Controller ('myContrroler', ['$ scope']);