Я работаю с угловым проектом, и у меня есть запрос GET и POST $ http в моем приложении. Я использовал перед угловой загрузкой в верхней части экрана. Но в соответствии с новым требованием мне нужно изменить текущую загрузочную панель с большой круглой загрузочной планкой с процентом внутри и размытым фоном.
Я обнаружил, что угловой индикатор скорости SVG отлично подходит для моей проблемы. Я проверил их сайт и Gitlab, но я не нашел, как я могу интегрироваться с моим действием в форме отправки? (В основном я отправляю форму на сервер, и я получаю ответ, но требуется слишком много времени, поэтому я хочу, чтобы этот круговой индикатор выполнения находился между ними)
Любая помощь будет оценена... :)
ОБНОВИТЬ
Мой HTML выглядит примерно так,
<form ng-submit="ctrl.submitSearch()">
<input type="text">
<input type="text">
<input type="checkbox">
<button> Start </button>
</form>
/* Result Table */
<table>
</table>
Пример круговой загрузочной панели (именно так я хочу) http://crisbeto.github.io/angular-svg-round-progressbar/
РЕДАКТИРОВАТЬ
в настоящее время у меня есть этот элемент индикатора выполнения,
<!--Background element when loading is in progress -->
<div class="overlay" ng-show="loading"></div>
<!--Angular SVG circular loading bar -->
<div class="popup"
ng-show="loading"
round-progress
max="100"
current="current"
color="#64b8e3"
bgcolor="#008acf"
radius="100"
stroke="20"
semi="false"
rounded="true"
clockwise="true"
responsive="false"
duration="800"
animation="easeInOutQuart">
</div>
И вот мой текущий CSS,
/* CSS for adding blury black background while loading is in progress */
.overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
margin: 0 auto;
padding-left: 0;
padding-top: 0;
z-index: 998;
background-color: Black;
opacity: .5;
}
/* CSS for loading bar */
.popup {
position: fixed;
z-index: 999;
padding-left: 45%;
}
Все работает отлично, за исключением положения круговой загрузочной панели, которую я хочу в центре страницы и фиксированной при прокрутке.
Предполагая, что ваши сообщения асинхронны, его скрипка показывает, как вы можете это сделать.
вы устанавливаете угловые привязки следующим образом:
1) используйте ng-класс в div или другом элементе, который вы можете связать с классом blur css, в зависимости от структуры вашего кода вы можете отключить класс "blur" css на счетчике прогресса.
2) на индикаторе выполнения привязывает свойство current к переменной счетчика тиков в вашей области $.
3), когда вы отправляете сообщение, также начинайте с $ interval с функцией увеличения тика, которая повторяется до тех пор, пока вы не получите обратный вызов, который остановит инкремент, сбросит класс размытия на ваш div и заполнит таблицу результатов.
Вы упомянули, что у вас есть две должности, вы можете явно установить значение currentTicks, когда вы получите первый ответ (например, если это 50% работы, вы установили ее равной 50).
вам, вероятно, понадобится работать с некоторой магией абсолютного положения CSS, чтобы ваш индикатор прогресса отображался в точном правильном месте (и мой отображается с самого начала, но вы можете использовать связанный класс css, чтобы он отображался: none до его готовности показывать)
edit: Я не упоминал blur css, я только что снял его с BenSlight. Здесь ответ Blur-эффект на элемент div
редактировать очищенное размытие...
form.blur {
-webkit-filter: blur(2px);
-moz-filter: blur(2px);
-o-filter: blur(2px);
-ms-filter: blur(2px);
filter: blur(2px);
}
дополнительная информация, основанная на комментариях. - после завершения вашего POST вам нужно удалить класс размытия из элемента, если вы привязали класс к угловому элементу (скажем, bgClass) $ scope.bgclass= ""; очистит его.
-re: позиционируя ваш оверлей, некоторые статические css применяются к div прогресса, что делает его немного сложным, но вы можете поместить отдельный div вокруг него и применить к нему следующий стиль (опять же, вы захотите добавить этот класс к элементу, когда вы запускаете процесс, и удалите его после завершения POST) - вам, вероятно, потребуется настроить эти значения заполнения для достижения наилучших результатов. Если вы посмотрите вокруг SO, вы, вероятно, найдете более простой css css для наложений tbh. (Я обновил скрипку на примере)
.overlay {
position: absolute;
top: 0;
left: 0;
max-width: 100px;
height: 100%;
margin: 0 auto;
padding-left: 40%;
padding-top: 30%;
z-index: 5;
}