Ich weiß, das scheint eine dumme Frage zu sein, aber ich habe hier ein Szenario.Wie kann man auf Funktionen zugreifen, die in Angulars Controllern in anderen Dateien (nicht in Controllern) definiert sind?
Ich habe eine Javascript-Datei mit three.js, um einige Modelle zu rendern. Diese Datei erfordert eine Backend-Bibliothek, aber mein WebGL-Rendering ist im Frontend, also habe ich Browsefiy verwendet, um meine eigenen Codes und die Backend-Bibliothek zu einer einzigen js-Datei mit dem Namen script.js zu kombinieren.
Ich möchte die init-Funktion in der Datei script.js in meinem Controller in controllers.js (das Rendering passiert nur, nachdem der Benutzer auf eine Schaltfläche klickt) ausgelöst werden. Ich verstehe, dass der Controller von angularJs isoliert mit Code außerhalb scheint, aber ich konnte keine gute Lösung für mein Problem finden.
Seit ich meinen Code geändert habe, um die Backend-Bibliothek einzuschließen, verwandelt er meine 400 Zeilen Rendercode in mehr als 2500 Codezeilen und macht es unmöglich, in einen einzigen Controller zu schreiben.
Gibt es einen guten Weg, um dies zu umgehen? Ich werde jeden Vorschlag oder Ideen sehr schätzen! Vielen Dank!
<head>
<---This are the angular files I need->
<script src="./lib/angular/angular.min.js"></script>
<script src="./lib/angular-route/angular-route.min.js"></script>
<script src="./js/app.js"></script>
<script src="./js/controllers.js"></script>
<script src="./js/services.js"></script>
<--the followings are the rendering files I need-->
<script src="lib/third-party/threejs/three.min.js"></script>
<script src="lib/third-party/threejs/StereoEffect.js"></script>
<script src="lib/third-party/threejs/DeviceOrientationControls.js"></script>
<script src="lib/third-party/threejs/OrbitControls.js"></script>
<script src="./js/script.js"></script>
</head>
aktualisieren Ich habe meine script.js. Es ist ziemlich lang, so dass ich hoffe, dass ich herausfinden kann, wie ich auf einfache Weise auf die Init-Funktion zugreifen kann. Vielen Dank!
https://jsfiddle.net/ruiss/qr616n4q/
Versucht, die 3rd-Party-Dateien ** über ** Ihre Dateien zu verschieben? – Phil
Wenn der Drittanbieter-Kram nicht über Angular injiziert wird, können Sie möglicherweise über den globalen Bereich darauf zugreifen. 'window.threejs()' oder was auch immer sie darstellen. – Stephen
@Phil Hallo, tut mir leid, ich bin mir nicht sicher, was du damit meinst. Die letzte Datei script.js ist die Datei, die ich nach Browserify bekomme. Alle 3rd-Party-Code sind bereits darüber. –