이것은 잘못 구성된 질문이지만 아직 명확하게 설명 할 수있는 지식이 없습니다. 또한 지저분한 프로젝트를 물려 받았기 때문에 예제 코드를 많이 줄 수는 없습니다. 나는 angular.module('messyApp')
에 존재하는 testCtrl
컨트롤러에 $scope.$back
함수를 정의했다. 이것은 별도의 js 페이지 main.js
에 있습니다.머리글의 일반 자바 스크립트에서 각도 함수를 호출하십시오.
각도 물건이로드 된 후 onkeydown
이벤트를 트리거하면 헤더의 일반 자바 스크립트 스크립트에서이 함수를 호출하려고합니다. 각도를 호출해야한다는 생각이 들지만 $apply
함수는 이러한 함수에 액세스하는 방법을 알아 내지 못합니다. 정의되지 않은 오류가 발생합니다.
testCtrl
컨트롤러를 설정하려면 $routeProvider
을 사용하고 있습니다. 몇 가지 코드가 있습니다.
<html>
<head>
...loads of scripts and stuff...
<script type="text/javascript">
function keyFunc(e) {
switch (e.keyCode) {
case 37:
console.log('left');
break;
case 38:
console.log('up');
break;
case 39:
console.log('right');
break;
case 40:
console.log('down');
break;
}
$rootScope.$next(); // angular function im trying to trigger
}
</script>
</head>
<body ng-app="messyApp" onkeydown="keyFunc(event)">
...tons more scripts...
</body>
</html>
각도 기능 $back()
은 정말에 오면 그래서, 나는이 트리거링 JS의 더 해키 솔루션을 받아 들일 수
<a ng-click="$back()"><div class="icon" id="backicon"><img src="back.png" /></div></a>
를 사용하여 페이지의 다른 하이퍼 링크 트리거 대신에 하이퍼 링크 (각도를 트리거 할 것이라고 생각합니다).
'angle.element ('body')를 수행하는 경우 scope() keyFunc에서'rootScope'를 잡을 것입니다 – Chandermani
좋습니다, $ rootScope에 접근했습니다.하지만 함수를 호출하는 방법을 알아낼 수 없습니까? – myol
먼저 범위에서 함수를 정의해야합니다. 두 번째로 html 요소가 첨부 된 범위인지 알아야합니다. 그런 다음 html 요소를 angular.element 구문을 사용하여 참조하고 범위를 가져 와서 함수를 호출하십시오. $ 다음에 어디에 정의되어 있습니다. 해당 ng 컨트롤러가 정의되어 있으면 해당 요소를 사용하십시오. – Chandermani