У меня этот код в моем appController. Код устанавливает значение $ scope.cursorWait true, когда выполняется HTTP:
$scope.$on('cfpLoadingBar:started', function (event, data) {
$scope.cursorWait = true;
});
$scope.$on('cfpLoadingBar:completed', function (event, data) {
$scope.cursorWait = false;
});
У меня также есть это в моей службе подключения. Функции вызываются при отключении Интернета:
isConnectedHandler = (): void => {
var self = this;
self.$rootScope.connected = true;
self.$rootScope.disconnected = false;
self.connectMessage = null;
self.minutes = 0;
}
isNotConnectedHandler = (): void => {
var retry = 0;
var self = this;
self.$rootScope.connected = false;
self.$rootScope.disconnected = true;
Как я могу отслеживать значение $ rootScope.disconnected и cursorWait, чтобы затем установить значение переменной rootScope, ожидающее значение true, если значение $ rootScope.disconnected или cursorWait истинно?
Предполагая, что ваш контроллер имеет несколько ViewModels, он хотел бы отслеживать, скажем, cursorWait
и connected
например. В этом случае Angular предоставляет вам способность watchGroup
. Таким образом, вы можете контролировать несколько переменных, и в случае, если один из них изменится, вы можете реагировать соответственно.
Пример кода (с использованием машинописного текста для демонстрации)
$scope.$watchGroup([()=> { return this.cursorWait }, ()=> { return this.connected}],
(oldValues, newValues)=> {
/* The callback gets an array of 'oldValues' and an array of 'newValues',
the index according to the variables you were watching */
});
Для получения дополнительной информации см. Угловую документацию.
$scope.$watch('variable',function())
для этого