Как я могу контролировать значение некоторых переменных области для изменений?

0

У меня этот код в моем 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 истинно?

  • 0
    Вы можете использовать $scope.$watch('variable',function()) для этого
  • 0
    Но в этом случае мне нужно смотреть более одной переменной? Можете ли вы привести пример, может быть, в ответ, чтобы я мог принять, если вы знаете, как часы могут контролировать более одного. Благодарю.
Теги:

1 ответ

1
Лучший ответ

Предполагая, что ваш контроллер имеет несколько 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 */
    });

Для получения дополнительной информации см. Угловую документацию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню