ПРИМІТКА . Це не працює, коли View і Controller з'єднані в маршруті або через об'єкт визначення директиви. Показане нижче працює лише тоді, коли в HTML є "SomeController as SomeCtrl". Так само, як Марк В. зазначає в коментарі нижче, і так само, як він каже, краще зробити так, як це робить Богдан.
Я використовую: var vm = this;
на початку контролер, щоб отримати слово "це" зі свого шляху. Тоді vm.name = 'Max';
і на вахті я return vm.name
. Я використовую "vm" так само, як @Bogdan використовує "self". Цей var, будь то "vm" або "self", потрібен, оскільки слово "this" набуває іншого контексту всередині функції. (тому повернення цього імені не буде працювати) І так, вам потрібно ввести $ range у вашому прекрасному рішенні "контролер як", щоб досягти $ watch. Дивіться посібник зі стилю Джона Папи: https://github.com/johnpapa/angularjs-styleguide#controllers
function SomeController($scope, $log) {
var vm = this;
vm.name = 'Max';
$scope.$watch('vm.name', function(current, original) {
$log.info('vm.name was %s', original);
$log.info('vm.name is now %s', current);
});
}