Я новичок в Angular, помощь будет высоко оценена. Я создаю приложение, которое имеет разные области, назовем его страницами (хотя это действительно приложение с 1 страницей), для которого я, естественно, использую разные представления, и у меня есть общий макет с телом, стилями и сценариями и т. Д.проблемы с событиями нажатия клавиш в угловом
У меня возникла проблема, когда я хочу слушать события клавиатуры только на одной из страниц приложения, которая должна быть интерактивной, а другие - административной. Я могу связать события клавиатуры с входами или документом или телом. Вход не подходит, и мой документ и тело являются глобальными, и я не хочу слушать каждое нажатие клавиши в моем приложении.
Что я должен сделать, чтобы решить эту проблему в угловом?
Моего кода здесь: https://github.com/mgenev/geminiFc/blob/master/public/js/controllers/practice.js
Я изменял с JQuery и связал это событие к телу в контроллере для конкретной страницы, но Угловой не реагировали, как произошло событие.
$('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>
Угловая дает мне ошибку:
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)
Глядя вперед некоторые советы. Благодаря!
спасибо, что это работает! – mobetta
Ваш последний блок кода вы проверяли, работает ли цикл дайджест, как шарм. Маленькая опечатка: '$ scope. $ Apply()' –