im работает с angularjs, и у меня есть кнопка для создания билетов, и эта работа с http-запросом, для вызова php-сети, проблема заключается в том, что http-запрос имеет задержку в х секунд, и люди могут сделать так много кликов в этой задержке, результат, тики изменения varius и только 1 работа, им нужно наложить задержку на кнопку, но я не могу сделать эту работу, пожалуйста, проверьте это и обратите внимание, что решение должно быть вне request
jsfiddleОтключена кнопка после x секунд
ответ
угловые обеспечивает компонент $timeout
службы для этого:
$timeout(function() {
$scope.betDelay=false;
}, 1000);
Среди других вещей , когда вы используете вспомогательный помощник $timeout
, он автоматически выполняет проверку грязной модели (которая по умолчанию не будет выполняться при использовании по умолчанию window.setTimeout()
).
В принципе, Угловой не собирается просто проверять без остановок независимо от того, изменился или нет $scope
; он проверяет только ключевые моменты жизненного цикла компонента, а $ timeout помогает вам привязываться к этому жизненному циклу.
Смотрите обновленный JSFiddle: http://jsfiddle.net/Lt7aP/862/
В качестве альтернативы, вы можете также явно указать $scope
, что он должен выполнять грязную проверку с помощью $apply()
. Например,
setTimeout(function() {
$scope.betDelay=false;
$scope.$apply();
}, 1000);
Пример: http://jsfiddle.net/Lt7aP/863/
спасибо, чувак, эта работа, извините за мою задержку :) – jearca
Мое понимание вашего поста является то, что пользователь может нажать кнопку Войти несколько раз, что делает несколько записей дубликатов (АНИ не имеет времени для проверки существующих записей , потому что он попадает так быстро).
Мы справляемся с этим, проверяя, была ли кнопка нажата. Сделайте переменную с именем $scope.isButtonClicked
и установите для нее значение false. Проверьте, установлено ли значение false onClick. Если оно ложно, установите значение true и сделайте запрос.
function LoginController($scope) {
$scope.isButtonClicked = false;
$scope.login = function() {
if($scope.isButtonClicked === false){
$scope.isButtonClicked = true
var request = $http({
dataType: 'json',
method: "post",
url: "/xxx.php",
data: {
data1: $scope.data1,
data2: $scope.data2
},
headers: { 'Content-Type': 'application/json' }
});
request.success(function (data) {
/* note i try puting a delay in the top, but idk why this cant work */
});
}
};
}
- 1. Кнопка отключена после нажатия вопроса
- 2. отключена кнопка
- 3. отключена кнопка
- 4. Android: после установки APK кнопка открытия отключена
- 5. Кнопка отправки отключена после первого щелчка
- 6. Кнопка закрытия отключена после представления листа
- 7. Почему эта кнопка отключена?
- 8. Содержимое перезагрузки после x секунд
- 9. Активизирует Javascript после «x» секунд
- 10. javascript: window.close(); после X количества секунд
- 11. Кнопка не отключена
- 12. Кнопка CSS отключена?
- 13. Кнопка «Назад» отключена iOS
- 14. Ручка отключена сенсорная кнопка
- 15. кнопка Magento оплаты отключена
- 16. Главная кнопка отключена keyguard
- 17. Кнопка «Как» отключена
- 18. проверить, отключена ли кнопка
- 19. Кнопка отключена MotionCaptcha
- 20. кнопка запуска genymotion отключена
- 21. Кнопка QT Design отключена
- 22. Кнопка отключения iPhone отключена
- 23. Кнопка удаления драйвера отключена
- 24. Кнопка архива Xcode отключена
- 25. Share кнопка выглядит отключена
- 26. Кнопка Bootstrap отключена outline
- 27. отключена кнопка кажется включенной
- 28. Кнопка отключена перед действием?
- 29. Кнопка отправки MFMailcomposeviewcontroller отключена
- 30. Кнопка JavaScript отключена Значение?
Так что это вопрос? Вам нужны или не нужны дополнительные клики для вызова Ajax? Почему бы вам просто отключить кнопку при нажатии и включить ее, когда вызов Ajax завершен? – epascarello
«Мне нужно поставить задержку в кнопке, но я не могу сделать эту работу», кажется, настоящий вопрос здесь. – jmar777
@ jmar777: Я понимаю, что проблема заключается в том, что пользователи спама многократно нажимают кнопку и делают несколько вызовов API во время входа в систему, поэтому решение состоит в том, чтобы отключить кнопку после первого щелчка. Я мог быть совершенно не прав. Мы понимаем вопрос по-разному. – VSO