다른 게시물과 비슷한 호기심 오류가 발생하지만 해결할 수 없었습니다. jQuery의 document.ready()를 사용하여 모든 버튼이 Firebase와 Angularfire로 통합 된 AngularJS 프런트 엔드를 포함하는 로컬 Javascript 파일을 참조하기 전에로드되는지 확인합니다.
내가 일반적으로 참조되지 않은 또는 초기화되지 않은 의존성 주입 각도 컨트롤러를 함께 콘솔에서 다음과 같은 오류 받고 있어요 :
Error: [$injector:nomod] Module 'myApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
을 나는 유튜브에 this tutorial을 다음 동안이 코드를 작성하고 기본적으로 모든 것을 동일하게 복사 앞서 언급 한 jQuery를 제외하고.
Index.html을
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Piano Lessons Administrator Signup</title>
<!--Jquery-->
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<!--AngularJS-->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.js"></script>
<!--Firebase Dependency-->
<script src="https://www.gstatic.com/firebasejs/4.8.0/firebase.js"></script>
<!-- AngularFire -->
<script src="https://cdn.firebase.com/libs/angularfire/2.3.0/angularfire.min.js"></script>
<!--Local Javascript-->
<script>
$(document).ready(function(){
$(function(){
$.getScript('javascripts/piano.js');
});
});
</script>
</head>
<body ng-app="myApp">
<div ng-congroller="MyCtrl as ctrl">
<pre>{{ ctrl.object | json }} </pre>
</div> <!--End myCtrl-->
</body>
...
</html>
... 그리고 Piano.js
(function() {
// Initialize Firebase
var config = {
apiKey: "myApikey",
authDomain: "myAuthDomain",
databaseURL: "myDatabaseURL",
projectId: "projectId",
storageBucket: "myStorageBucket",
messagingSenderId: "MyMessagingSender"
};
firebase.initializeApp(config);
var myApp = angular
.module('myApp', ['firebase'])
.config(function ($firebaseRefProvider) {
$firebaseRefProvider.registerUrl({
default: config.databaseURL,
object: `${config.databaseURL}/angular/object`
});
})
.factory('ObjectFactory', ObjectFactory)
.controller('MyCtrl', MyCtrl);
function ObjectFactory($firebaseObject, $firebaseRef){
return $firebaseObject($firebaseRef.object);
}
function MyCtrl(ObjectFactory){
this.object = ObjectFactory;
this.sayHello =() => {
//console.log(this.object.name);
return `Hello, ${this.object.name}`;
}
}
const ctrl = new MyCtrl({ name: 'David' });
const message = ctrl.sayHello();
console.log(message);
...
}());
는 흥미롭게을 console.log (메시지)가 모듈을 필요로하는 것처럼 보인다 작동하는 것처럼 보인다 컨트롤러 및 팩터 리가 작동하도록 작업하고 있지만 태그의 객체가 컴파일되지 않고 일반 텍스트 (컨트롤러가 실패했음을 나타냄)가 그대로 유지됩니다. 그것을 $ (document) .ready() 안에두면 다른 태그를 범위 밖으로 벗어나게됩니까?
이 getScript''사용하지만, 당신이 할 경우 수동으로 대신 사용하는 것보다 응용 프로그램을 부트 스트랩 할 필요가로드해야하는 이유 없음 아이디어'NG-app' – charlietfl
부품이 @charlietfl 그 I 머리글에 배치 된 경우 찾을 수없는 요소에 대해 오류를 던질 수있는 입력 상자 (특히 일부 입력 상자와 관련 자바 스크립트)는 표시되지 않지만 본문에 스크립트가 포함되어 있으면 각도가로드되지 않습니다. – BobtimusPrime
아마도 스크립트는 지시문에 있어야합니다. 하지만 수동 부트 스트랩 방식이라 할지라도 스크립트 태그에 스크립트를 포함시킬 수 있어야합니다. – charlietfl