Обновление значения внутри угловой функции js

0

Файл controller.js указывается как

function XYZController($rootScope,$scope){
    var vm = this;
    vm.a = 0;
    var change = function(data){
        data.forEach(function(e,i){
            vm.a+=Number(e.value);
        });
    }
    $log.log(vm.a);
}

Вызывается изменение функции, но $ log.log(a) печатает 0 вместо обновленной суммы. Как принять обновленное значение vm.a? Когда я применяю $ scope. $ Apply, я получаю сообщение об ошибке "$ дайджест уже идет ".

  • 1
    Как вы называете change ? Пожалуйста, оставьте все соответствующие коды.
  • 0
    Если вы используете ng-click, вам не нужно вызывать $ apply.
Теги:

2 ответа

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

Вы вызываете $log.log(vm.a); перед вызовом change(), поэтому он регистрирует ваш vm.a = 0; , если вы измените свой код на это, он должен работать.

function XYZController($rootScope,$scope){
    var vm = this;
    vm.a = 0;
    var change = function(data){
        data.forEach(function(e,i){
            vm.a+=Number(e.value);
        });
        $log.log(vm.a);
    }
}
  • 0
    точно, JavaScript является синхронным.
  • 0
    Значение будет изменено, и оно также будет использоваться вне вашей функции. Почему ты решил, что это невозможно?
Показать ещё 1 комментарий
0

Вы не можете вызывать $ log до завершения вашей функции изменения, иначе она вернет вас только 0.

Ещё вопросы

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