У меня возникла проблема, когда я пытаюсь просмотреть определенный элемент из моей области после того, как решение выполнено. По какой-то причине он запускается, когда я запускаю вторую строку из этого фрагмента, и я, похоже, не могу добавить этот $ watch во время «разрешения».
Я понимаю, что обещания асинхронны, но как я могу узнать, когда мое решение сделано, чтобы добавить часы?
variableToWatch может быть изменено либо с помощью кода или в пользовательском интерфейсе (в противном случае я бы просто использовал нг-изменение = "DoWork()")
$scope.variableToWatch = $route.current.locals.data.initialValue;
$scope.listOfDependantData = $route.current.locals.data.items;
$scope.$watch('variableToWatch', function (newValue) {
myService.getNewDependantData(newValue).$promise.then(
function (items) {
$scope.listOfDependantData = items;
}
);
};
Я хочу посмотреть $ scope.variableToWatch, но моя проблема в том, что он работает дважды в первый раз. Я не хочу, чтобы он запускался изначально (когда я установил значение в первый раз). И это начальное значение происходит от асинхронного вызова. Одна вещь, которая может мне помочь, - это возможность получить обещание, возвращенное «решением» маршрута. – LostBalloon
@LostBalloon Обновлен ответ. Это делает то, что вы хотите? Кроме того, я боюсь, что я вообще не знаю, как установить обещание в контроллере. Вы можете использовать побочные эффекты решения обещаний в своем главном приложении для совместного использования значения через службу с вашим контроллером, но я не уверен, как это играет с текущей структурой вашего приложения. –