更新angularjs库会导致angular.bootstrap()中的错误

时间:2015-02-13 21:19:38

标签: javascript jquery angularjs

我们有一个遗留框架,我们希望能够很快做一些重大更新。作为其中的一部分,我们正在努力使我们所有的库文件都是最新的。在此过程中,我们将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.jsdataTools.jscontrollers.jsClintDataTools.js的导入。 load.js中的代码然后调用run.js中定义的函数。此函数加载config.js并在执行时应用设置,并使用jQuery将角度标记添加到自动生成的html中找到的表单。然后它运行angular.module()angular.bootstrap()命令。

controllers.js持有MainCtrl声明。 config.js只是一个json字符串。 dataTools.jsClientDataTools.js包含angular使用的指令 - 即使在删除指令文件时,这个错误仍然会发生,所以我不认为它们是它的一部分,但是它们包括在这里问题的完整性..

不,我不能只是首先改变表单中的html。我无法访问它。它是自动生成的html,我们希望添加智能行为,如预防性数据检查。这是一个自动生成的表单,我们想要更积极地工作。请不要只将angularjs标记放入html中,请不要问为什么我们不能触及原来的html。

1 个答案:

答案 0 :(得分:1)

声明控制器的方式
function MyCtrl() {}

已弃用 - 请尝试声明

angular.module("app").controller("MyCtrl", function() {})