У меня есть функция, которая вычисляет процент заполнения формы.
При редактировании существующей записи данные загружаются и обрабатываются, но проверка не запускается.
Если я отредактирую данные на одном из входов, они сработают и начнут работать.
<div ng-form="dtform" class="container-fluid form-horizontal" ng-cloak>
<fieldset ng-form="requestor_tab"> ... </fieldset>
<fieldset ng-form="some_tab"> ... </fieldset>
</div>
События, запускающие функцию
$scope.$watch("data", () => { calculateCompleted(); }, true);
$scope.$watch("dtform.$valid", () => calculateCompleted());
Рассчитать функцию:
let calculateCompleted = () => {
let errors = 0;
let success = 0;
settings.tabs.forEach(tab => {
// Here is the problem: $scope.dtform[tab].$$success is undefined.
if ($scope.dtform && $scope.dtform[tab] && $scope.dtform[tab].$$success && $scope.dtform[tab].$$success.required)
success += $scope.dtform[tab].$$success.required.length;
});
// some math logic
return percentage;
};
Похоже, что $scope.dtform[tab].$$success
не определено при запуске этой функции, но когда я проверяю значение в консоли, оно определено и имеет значение.
Кажется, мне не хватает дополнительного триггера, может кто-нибудь посоветовать, какой это может быть триггер?
Спасибо
Edit:
Я знаю, что это можно решить, вызвав эту функцию из шаблона
<div ng-hide="checkCompetion()"></div>
но мне было интересно, есть ли более элегантное решение