我是 Angular 的新手,非常感谢您的帮助。我正在制作一个具有不同区域的应用程序,我们称之为页面(即使它确实是一个单页应用程序),我自然会使用不同的视图,并且我有一个与正文、样式和脚本等共同的布局。
我遇到了一个问题,我只想在应用程序的一个页面中收听键盘事件,该页面是交互式的,而其他页面是管理的。我可以将键盘事件绑定到输入或文档或正文。输入不合适,我的文档和正文是全局的,我不想听我的应用程序中的每一个按键。
我应该怎么做才能在 Angular 中解决这个问题?
我的代码在这里:https ://github.com/mgenev/geminiFc/blob/master/public/js/controllers/practice.js
我用 jQuery 作弊并将事件绑定到特定页面的控制器中的主体,但 Angular 并没有像事件发生那样做出反应。
$('body').keydown(function(e) {
$scope.changeIndex(e);
});
然后我读到我必须使用 $scope.$apply(); 我在事件触发的 changeIndex 函数的底部所做的。
这确实有效,但是当我通过单击事件调用 changeIndex 时,这是控制我的 UI 的另一种方法
<div class="practice-controls-bottom">
<i ng-click="changeIndex('down');" class="icon-thumbs-down icon-4x thumbs-down"></i>
<i ng-click="changeIndex('up');" class="icon-thumbs-up icon-4x thumbs-up pull-right"></i>
</div>
Angular 给了我一个错误:
Error: $apply already in progress
at Error (<anonymous>)
at g (http://localhost:3000/lib/angular/angular.min.js:85:37)
at Object.e.$apply (http://localhost:3000/lib/angular/angular.min.js:89:129)
at Object.$scope.changeIndex (http://localhost:3000/js/controllers/practice.js:173:20)
期待一些建议。谢谢!