javascript - presionado - onclick html5
$ aplicar ya en curso al enviar un evento de clic a un botón? (1)
Su evento de clic ejecuta un ciclo de resumen que está en conflicto con el ciclo de resumen actual, $timeout
lo ayudaría en esta situación. Ajustar evento de clic dentro $timeout
función $timeout
.
Margen
<body ng-app="myApp" ng-controller="testCtrl" ng-keydown="key($event);">
<button id="viewQuestions" type="button" ng-click="isButtonClicked = !isButtonClicked; test();"> Test</button>
Is Button Clicked {{isButtonClicked}}
</body>
Código
$scope.$on(''key'', function (e, key) {
if (key == 13) {
if (ts.test.current && ts.test.userTestId) {
$timeout(function(){
angular.element(document.getElementById("viewQuestions")).trigger(''click'');
})
}
}
});
Cualquier cosa que escriba dentro de ng-click
se llamará.
Tengo un botón en mi página con un id = "viewQuestions" en una página:
<body ng-keydown="key($event);">
Mi código está buscando hits clave como este:
$scope.key = function ($event) {
$scope.$broadcast(''key'', $event.keyCode)
}
y en el controlador:
$scope.$on(''key'', function (e, key) {
if (key == 13) {
if (ts.test.current && ts.test.userTestId) {
document.getElementById("viewQuestions").click();
}
}
});
Cuando ejecuto el código y hago clic en ENTER, obtengo este error:
Error: [$rootScope:inprog] $apply already in progress
http://errors.angularjs.org/1.3.7/$rootScope/inprog?p0=%24apply
at REGEX_STRING_REGEXP (http://localhost:2757/lib/angular/angular.js:63:12)
at beginPhase (http://localhost:2757/lib/angular/angular.js:14735:15)
at Scope.$get.Scope.$apply (http://localhost:2757/lib/angular/angular.js:14479:11)
at HTMLButtonElement.<anonymous> (http://localhost:2757/lib/angular/angular.js:22945:23)
at HTMLButtonElement.eventHandler (http://localhost:2757/lib/angular/angular.js:3009:21)
at http://localhost:2757/app/tests/controllers/TestsController.js:24:62
at Scope.$get.Scope.$broadcast (http://localhost:2757/lib/angular/angular.js:14700:28)
at Scope.AppController.$scope.key (http://localhost:2757/app/appController.js:30:20)
at $parseFunctionCall (http://localhost:2757/lib/angular/angular.js:12330:18)
at ngEventDirectives.(anonymous function).compile.element.on.callback (http://localhost:2757/lib/angular/angular.js:22940:17)
¿Alguien puede darme consejos sobre esto? Solo quiero simular el clic de un botón cuando se presiona la tecla ENTER. Intenté soluciones con formularios, pero no satisface mis necesidades más bien complicadas.