Ala*_*an2 20 javascript events angularjs angularjs-digest
我的页面上有一个按钮,页面上有一个id ="viewQuestions":
<body ng-keydown="key($event);">
Run Code Online (Sandbox Code Playgroud)
我的代码正在检查这样的关键命中:
$scope.key = function ($event) {
$scope.$broadcast('key', $event.keyCode)
}
Run Code Online (Sandbox Code Playgroud)
并在控制器中:
$scope.$on('key', function (e, key) {
if (key == 13) {
if (ts.test.current && ts.test.userTestId) {
document.getElementById("viewQuestions").click();
}
}
});
Run Code Online (Sandbox Code Playgroud)
当我运行代码并单击ENTER然后我收到此错误:
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)
Run Code Online (Sandbox Code Playgroud)
任何人都可以给我这方面的建议.我只想在按下ENTER键时模拟按钮的单击.我确实尝试过使用表单的解决方案,但它不符合我相当复杂的需求.
Pan*_*kar 37
您的点击事件正在运行与当前摘要周期冲突的摘要周期,$timeout
在这种情况下会帮助您.在$timeout
函数内部包含click事件.
标记
<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>
Run Code Online (Sandbox Code Playgroud)
码
$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');
})
}
}
});
Run Code Online (Sandbox Code Playgroud)
无论你在里面写什么ng-click
都会被召唤.
归档时间: |
|
查看次数: |
12210 次 |
最近记录: |