我有一个使用ngRoute模块的Angular 1.3应用程序。我希望能够在与视图相同的文件中定义控制器,但由于某些原因,Angular无法识别它:
view.html:
<script>
angular.module("app").controller("fooController", function() {});
</script>
<div ng-controller="fooController"></div>
module.js:
angular.module("app", ["ngRoute"]);
// ...
的index.html:
<!-- ... -->
<body>
<div ng-view></div>
<script src="angular.js"></script>
<script src="angular-route.js"></script>
<script src="module.js"></script>
</body>
<!-- ... -->
上面的设置会抛出一个错误:参数'fooController'不是函数,未定义。
Tt在1.3之前工作,当控制器可以定义为全局函数时。 此外,在模块配置期间调用$controllerProvider.allowGlobals();
并且控制器被定义为全局函数时,不会出现此问题。
我知道在HTML文件中定义控制器不是最好的主意,但在这种情况下,我有充分的理由这样做。
任何帮助将不胜感激。
编辑: 以下是显示问题的plunker:http://plnkr.co/edit/JU350xL7X9ryF3S72o6s
点击那里的链接更改路线,然后查看浏览器的控制台。
答案 0 :(得分:0)
错误表示当/ Angular首次尝试使用控制器时,控制器尚未实例化。
我的猜测是你在ngRoute定义中引用控制器,而ngRoute模块试图在显示你的视图之前覆盖控制器依赖。
如果您要更新问题以包含路线配置,那可能会更加明显。工作(或非工作)的Plnkr.co演示会更好。
答案 1 :(得分:0)
我在Github上为此创建了一个问题:https://github.com/angular/angular.js/issues/11384。事实证明这种情况尚未得到支持。