я в настоящее время имею некоторый код ключа функциональности в app.run(function...
в Угловом:Сделать угловые функции доступны для всех контроллеров
app.run(function($rootScope, $window) {
//window dimensions
$window.width = angular.element($window).width();
$window.height = angular.element($window).height();
//initial variables
var scrollTimer = false;
//keydown event listeners
document.onkeydown = function(e){
//scroll down keys
if (e.keyCode == 32 || e.keyCode == 40) {
scroll(-1);
e.preventDefault(); }
//scroll up keys
if (e.keyCode == 38) {
scroll(1);
e.preventDefault(); }
}
//scroll
function scroll(delta){
//check scroll timer
if (scrollTimer) return;
//new scroll pane
if (delta < 0 && $rootScope.pane.count < $rootScope.pane.max) $rootScope.pane.count += 1;
else if (delta > 0 && $rootScope.pane.count > 0) $rootScope.pane.count -= 1;
else return;
//apply current pane
$rootScope.$apply();
//animate scroll
var scroll = $rootScope.pane.count * $window.height + "px";
$("html, body").animate({scrollTop: scroll}, 600, "swing");
//reset scroll timer
scrollTimer = true;
setTimeout(function(){ scrollTimer = false; }, 1500);
}
});
Теперь у меня есть один контроллер (и, возможно, другие), где я хочу, чтобы получить доступ к функции scroll()
. Как так:
app.controller("AsideCtrl", function($rootScope, $scope){
//button scrolling
$scope.scrollTo = function(index){
index = index + 1;
scroll(index);
}
});
Конечно, это не работает из-за $scope
. Есть ли простой способ сделать это возможным?
Спасибо. Я думал, что услуга может быть ответом. Я прочитал эту документацию раньше и нахожу ее немного сложной и тяжелой. В частности, я стараюсь правильно обращаться к сервису в своем контроллере. Не могли бы вы привести пример с моими функциями? – Coop
Не понимал, что все так просто! Спасибо – Coop
Не беспокойтесь, я рад, что смогу помочь. Cheers – Grissom