Angular的视图中的控制器定义

时间:2015-03-18 12:49:47

标签: javascript angularjs

我有一个使用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

点击那里的链接更改路线,然后查看浏览器的控制台。

2 个答案:

答案 0 :(得分:0)

错误表示当/ Angular首次尝试使用控制器时,控制器尚未实例化。

我的猜测是你在ngRoute定义中引用控制器,而ngRoute模块试图在显示你的视图之前覆盖控制器依赖。

如果您要更新问题以包含路线配置,那可能会更加明显。工作(或非工作)的Plnkr.co演示会更好。

答案 1 :(得分:0)

我在Github上为此创建了一个问题:https://github.com/angular/angular.js/issues/11384。事实证明这种情况尚未得到支持。

相关问题