angularjs效率声明控制器内部或外部

时间:2015-01-09 06:30:17

标签: angularjs

有一个更复杂的问题,但我真正想知道的一个因素是......

与在声明文件中声明控制器(第一种方法)相比,将声明内部控制器(第二种方法)声明为未实例化的部分(还)会提高应用程序的效率

我认为通过将ng-controller放在partials中就好像它们在外面会更有效,它们都必须在开始时立即实例化,并且始终保持更多的内存使用

就内存分配而言,我测试了两种方法,两者似乎都给了我相同的内存量。

第一种方法:

in "index.html:"

<div ng-controller="mainController as mainCtrl">

   <div ng-switch="mainCtrl.currentPage">
        <div  ng-controller='browsePageController as browseCtrl'>
             <div ng-switch-when="browsePage">
                 <browse-page></browse-page>
             </div>
        </div> 
        <div ng-controller='otherController as otherCtrl'>
             <div ng-switch-when="homePage">
                 <other-page></other-page>
             </div>
        </div>
   </div>

</div>

第二种方法:

<div ng-controller="mainController as mainCtrl">

   <div ng-switch="mainCtrl.currentState">
        <div ng-switch-when="browsePage">
            <browse-page></browse-page>
        </div>
        <div ng-switch-when="otherPage">
            <other-page></other-page>
        </div>
   </div>

</div>

in "homePage.html":

<div ng-controller='homePageController as homeCtrl'>
    ......
</div>

另一个问题是......

每次页面更改(例如从browsePage到otherPage),otherPage中的控制器都会被初始化(如果使用第二种方法)。这实际上与我的数据混淆了一些。任何可以帮助我更好的设计模式建议?谢谢

1 个答案:

答案 0 :(得分:0)

摆脱了带视图的开关 - 使用了ui-router和stateProvider,这对于管理angularjs app的许多问题非常有用