Вы правильно догадались, это проблема дайджеста angularJS.У вас есть событие $element.ready
в директиве webix-ui
, которое не вызывает $scope.$digest()
в конце, поэтому изменения в этом обработчике событий не перевариваются при загрузке страницы и отрисовке элементов.
Цикл дайджестазапускается при первом нажатии кнопки «плюс» при повторном рендеринге пользовательского интерфейса.Чтобы решить эту проблему, просто добавьте $scope.$digest()
в конце обработчика событий.
$element.ready(function() {
// Here goes all existing code
// Add the following block to enable the row
let rowIndex = dataname[dataname.length - 1];
$scope.$watch(() => $scope.$parent.enabledItem[rowIndex], isEnabled => {
$scope.config[dataname].disabled = !isEnabled;
watcher();
});
// call digest at the end
$scope.$digest();
});
NB: В некоторых местах вы используете собственный JavaScript setTimeout
, используйте $timeout
вместо этого, который заботится о циклах дайджеста.
Обновление:
Чтобы включить следующую строку, вы должны добавить наблюдатель, как я делал выше, и изменить привязку события клика.
<input type="button" ng-click="enable(event)">
до
<input type="button" ng-click="enable(event + 1)">