Ответ 1
Каждый контроллер имеет связанный объект $scope
.
Функция контроллера (конструктора) отвечает за настройку свойств и функций модели. Это можно сделать только через $scope. Независимо от того, какую функцию или модель вы применяете в представлении (html файл), доступ к которому осуществляется в контроллере с использованием области.
Доступны только методы, определенные в этом объекте $scope из HTML/view. Пример - из ng-click, фильтров и т.д.
Теперь рассмотрим ваши примеры один за другим -
1.
function MyController($scope) {
$scope.username = 'World';
};
В приведенном выше примере вы определяете любой атрибут с именем пользователя с его значением "Мир". Предположим, что в html файле у вас есть следующая строка кода -
<div ng-controller="MyController">
<h1>{{data.username}}</h1></div>
Это автоматически выберет значение из контроллера и отобразит его на экране. Стоит отметить, что "данные". в разметке - это имя контроллера, которое html-страница может ссылаться на контроллер как. Обычно это определяется в контроллере или в верхней части html файла.
2.
$scope.sayHello = function() {
$scope.greeting = 'Hello ' + $scope.username + '!';
};
Это функция, которую вы определили в контроллере, доступ к которому вы можете получить, следуя коду -
<div ng-controller="MyController">
<h1>{{data.greeting}}</h1></div>
Здесь data.greeting автоматически выберет значение из функции sayHello, то есть отображаемое значение будет "Hello World". "Мир" от имени пользователя, связанного с "Привет" раньше.
Надеюсь, это очистит ваши сомнения.:)