Потеря области видимости переменной - PullRequest
0 голосов
/ 01 июня 2018

Итак, в моей программе angularJS я пытаюсь получить данные из базы данных, и я делаю это успешно, но затем теряю значение моей переменной.Почему это так и как я могу это исправить?

    function loadLocOptions() {
        locTaskOptionsReq.requestLocTaskOptions(vm.task).then(function (data) {
            if (data == null) {
                vm.locOptions = locTaskOptionsService.getEmptylocTaskOption();
                vm.locOptions.ERPKey = sessionService.getCurrentUser().ERPKey;
                vm.locOptions.LocKey = sessionService.getCurrentUser().LocKey;
            } else {
                vm.locOptions = data;
            }
            vm.locOptionsLoaded = true;
            // Data is here
            console.log(vm.locOptions);
        });
        // Now is null
        console.log(vm.locOptions);
    }

Я пытаюсь затем позвонить, используя мой locOptions, чтобы использовать мой HTML:

<div ng-repeat="loc in vm.locOptions">...</div>

вот мой контроллер, который также:

module.component("asaLocOptionsComponent", {
    bindings: { task: '='},
    controllerAs: "vm",
    controller: ["$scope", "$location", "shellPageAdapter", "sessionService", "staticData", "activeData", "ScreenModes", "localizationService", "locationReq", "locTaskOptionsService", "locTaskOptionsReq", asaLocOptionsController],
    transclude: false,
    templateUrl: "/system/SystemManager/app/organization/asaLocOptions.html"
});

1 Ответ

0 голосов
/ 01 июня 2018

То, что происходит, когда ваш сервисный запрос requestLocTaskOptions - это асинхронные вызовы, что означает, что он не останавливает выполнение потока.Таким образом, он продолжится и выполнит

console.log(vm.locOptions); // Which is null currently as your callback is not executed yet

После получения результатов будет выполнен ваш обратный вызов и будет установлена ​​vm.locOptions.

Таким образом, ваш требуемый код / ​​бизнес должен быть включен в функцию «Обратный звонок», иначе вы можете создать наблюдатель для vm.locOptions, который будет выполняться при изменении значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...