AngularJS控制器执行两次(不是因为路由器)

时间:2014-03-31 19:23:54

标签: javascript angularjs angularjs-controller

根据我的阅读,此问题的最常见原因是控制器包含在模板和路由提供程序中。在我的例子中,只有包含这个html的父模板被包含在路由器中,并且有自己的控制器。作为菜单选择

的结果,包含子模板

因此,无论何时选择菜单项,模板都会被加载,控制器中的所有内容都会执行两次。它可以是ng-switch或ng-include的产品吗?

<span ng-switch on="selection">
    <div ng-switch-when="0">
        <div ng-include="'partials/one.html'" ng-controller="oneController"></div>
    </div>
    <div ng-switch-when="1">
        <div ng-include="'partials/two.html'" ng-controller="twoController"></div>
    </div>
    <div ng-switch-when="2">
        <div ng-include="'partials/three.html'" ng-controller="threeController"></div>
    </div>
</span>

修改

包含的部分不再包含控制器。我已经三次检查过这些控制器除了这段代码之外没有被提及。一个/两个/三个部分的内容看起来像这样,控制器仍然运行两次。

<div>Nothing to see here.</div>

1 个答案:

答案 0 :(得分:1)

我在这里做了一个有根据的猜测......但你的"'partials/one.html'"中还有一个ng-controller="oneController"吗?如果是这样,您需要从包含div或部分删除ng-controller声明。