"直接嵌套" ng控制器。这是正常的吗?

时间:2016-11-15 08:42:25

标签: angularjs architecture ng-controller

这可能是游戏的后期,Angular 2是该区域的新手,但我最近在项目的一个角落遇到了这个问题。我没有参与过如此规模的许多Angular应用程序(关于团队成员的贡献),我想知道为什么这段代码实现如下:

app.js:

angular
    .module('myModule')
    .controller('AppCtrl', ['$scope','$rootScope', function($scope, $rootScope) {

        $scope.SideMenuCtrl = function ($scope) {
            $scope.staticMenu = _service.getMenuList($rootScope.acctId);
        };

    }]);

的index.html:

<!DOCTYPE html>
<html ng-app="ngApp" ng-controller="AppCtrl">
<head></head>
<body>
<header></header>
<div id='wrapper' ng-hide="hideNav()">
    <div id='main-nav-bg'></div>
    <nav id='main-nav' class='main-nav-fixed'>
        <div class='navigation'>
            <ul class='nav nav-stacked' ng-controller="SideMenuCtrl">
            </ul>
        <div>
    <nav>
</div>

问题:

我试图理解为什么/如何分配这样的嵌套控制器,而没有专用的角度控制器?这个破坏(假设)惯例/混合不同的目的不是吗?

2 个答案:

答案 0 :(得分:1)

从本质上讲,你是正确的,但有些控制者的责任有限,以至于它是两个邪恶中的较小者。 要么将文件夹与另一个控制器文件混合在一起,要么快速将其写入它将被使用的位置

简而言之,您应该问的问题是:

  1. 这个控制器只能在这里使用吗?
  2. 尺寸紧凑。
  3. 如果这两个问题都是肯定的答案,请将其写为内联。

答案 1 :(得分:1)

这样做的主要原因是很容易维护像这样的小型控制器。这非常有用,特别是如果您的控制器将用于非常小的功能,并且您不需要专门的控制器。

特别是如果应用程序很大,这有助于保持树的有序性。