Я пытаюсь использовать $ watch для него. Тело $ watch срабатывает при инициализации страницы (с неопределенным значением в newValue), а не при нажатии на кнопку «btnChangeIsLoggedIn».Как наблюдать примитивную переменную обслуживания в контроллере с помощью AngularJS?
<!DOCTYPE html>
<html data-ng-app="myApp">
<head><title>title</title></head>
<body>
<script src="lib/angular/angular.js"></script>
<div ng-controller="ctrl1">
<input type="text" ng-model="isLoggedIn" />
<input type="button" id="btnChangeIsLoggedIn"
value="change logged in" ng-click="change()" />
</div>
<script>
var myApp = angular.module('myApp', []);
myApp.service('authService', function() {
this.isLoggedIn = false;
});
myApp.controller('ctrl1', function ($scope, authService) {
$scope.isLoggedIn = authService.isLoggedIn;
$scope.$watch("authService.isLoggedIn", function (newValue) {
alert("isLoggedIn changed to " + newValue);
}, true);
$scope.change = function() {
authService.isLoggedIn = true;
};
});
</script>
</body>
</html>
Что я делаю неправильно?
Мой код на JSFiddle: http://jsfiddle.net/googman/RA2j7/
Спасибо! Правильно ли, что если я хочу изменить текстовое поле, я должен сделать что-то вроде этого: '$ scope. $ Watch (function() { return authService.isLoggedIn; }, function (newValue, oldValue) { if (newValue == oldValue) return; $ scope.isLoggedIn = newValue; alert ("isLoggedIn изменено с" + oldValue + "на" + newValue); }, true); '(http://jsfiddle.net/ googman/RA2j7/5 /) – Googman
Да, это сработает. – TheSharpieOne
Отлично! Большое спасибо! – Googman