我们有一个遗留框架,我们希望能够很快做一些重大更新。作为其中的一部分,我们正在努力使我们所有的库文件都是最新的。在此过程中,我们将angularjs从1.0.7升级到1.3.13。突然间,我们得到了一个停止显示的错误。
Error: [ng:areq] http://errors.angularjs.org/1.3.13/ng/areq?p0=MainCtrl&p1=not%20a%20function%2C%20got%20undefined
问题是:为什么当我们升级到最新的库时会发生这个错误,我现在应该怎么做呢?我将在下面添加最相关的代码行,并且我可以根据要求添加更多代码,但它有点复杂,我不知道如何将其分解为易于操作的内容。
错误发生在angular.boostrap()
相关代码如下所示:
angular.module('app',['DataTools','ClientDataTools']);
angular.bootstrap(document, ['app']);
主Ctrl定义如下:
function MainCtrl($scope, $compile) {
文件结构如下:
load.js
run.js
dataTools.js
load / controllers.js
load / config.js
load / ClientDataTools.js
load / libraries.html
自动生成的html与load.js
中的js代码一起加载。它首先要加载libraries.html
,其中包含run.js
,dataTools.js
,controllers.js
和ClintDataTools.js
的导入。 load.js
中的代码然后调用run.js中定义的函数。此函数加载config.js并在执行时应用设置,并使用jQuery将角度标记添加到自动生成的html中找到的表单。然后它运行angular.module()
和angular.bootstrap()
命令。
controllers.js
持有MainCtrl
声明。 config.js
只是一个json字符串。 dataTools.js
和ClientDataTools.js
包含angular使用的指令 - 即使在删除指令文件时,这个错误仍然会发生,所以我不认为它们是它的一部分,但是它们包括在这里问题的完整性..
不,我不能只是首先改变表单中的html。我无法访问它。它是自动生成的html,我们希望添加智能行为,如预防性数据检查。这是一个自动生成的表单,我们想要更积极地工作。请不要只将angularjs标记放入html中,请不要问为什么我们不能触及原来的html。
答案 0 :(得分:1)
用
声明控制器的方式function MyCtrl() {}
已弃用 - 请尝试声明
angular.module("app").controller("MyCtrl", function() {})