javascript - 如何访问 Angularjs Controller 中其他文件(不是 Controller )中定义的函数?

标签 javascript angularjs angularjs-scope

我知道这似乎是个愚蠢的问题,但我这里有一个场景。

我有一个使用 three.js 渲染某些模型的 javascript 文件。 这个文件需要一个后端库,但我的 WebGL 渲染是在前端进行的,所以我使用 Browsefiy 将我自己的代码和后端库组合到一个名为 script.js 的 js 文件中.

我想在 controllers.js 中定义的 Controller 中触发 script.js 文件中的 init 函数(渲染仅在用户单击某个按钮后发生)。 我知道 angularJs 的 Controller 似乎与外部代码隔离,但我找不到解决问题的好方法。

自从我浏览我的代码以包含后端库后,它将我的 400 行渲染代码变成了 2500 多行代码,并且无法在单个 Controller 中编写。

有什么好的方法可以解决这个问题吗?我将不胜感激任何建议或想法!谢谢!

<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>

更新 我发布了我的 script.js。它很长,所以我希望我可以通过弄清楚如何以简单的方式访问内部的 init 函数来解决这个问题。谢谢!

https://jsfiddle.net/ruiss/qr616n4q/

最佳答案

如果controller中有父子关系,可以使用

$scope.$parent.<anything>

如果没有,则将其添加到$rootScope

您还可以使用 $boardcast$emit方法来传递数据并监听它以调用函数(监听器)。

您还可以创建 services它将保持功能并将在多个 Controller 之间共享。

最后,请查看此链接以获取详细信息 https://stackoverflow.com/a/20181543/1702612

编辑:

由于该功能是通用的,您可以尝试这些解决方案-

创建 IIFE -

var coreFunctions = (function() {
   return <Object_of_functions>;
} ());

如果你使用的是 ES6 -

module.exports = {
    <function_to_export_1>,
    <function_to_export_2>,
    ....
};

您还可以使用 window.<function> 使函数成为全局函数但这会污染全局范围,不推荐。

关于javascript - 如何访问 Angularjs Controller 中其他文件(不是 Controller )中定义的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38709445/

相关文章:

javascript - 表单验证消息不显示

javascript - 如何在指令中调用父作用域函数

javascript - AngularJs $compile 完成/结束事件

javascript - function($) 在 javascript 中是什么意思?

javascript - JavaScript cookie 的有效期为 6 个月

javascript - 如何在 AngularJS 中选中和取消选中复选框时运行函数?

javascript - 从 DOM 调用服务函数 - Angular 2

javascript - 在动态 AngularJS 按钮上添加 Google 事件跟踪代码

AngularJS ngInclude 动态改变它的位置

angularjs - 为什么 Angular (1.5) 组件总是有一个独立的作用域?