"Direct nesting" 个 ng 控制器。这是正常的吗?

"Direct nesting" of ng-controllers. Is this normal?

由于 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>

问题:

我试图理解为什么/推理/好处是分配这样的嵌套控制器,而不是专用的 angular 控制器?这不是打破(假设的)惯例/混合不同的目的吗?

本质上你是对的,但一些控制者的责任如此有限,以至于这是两害相权取其轻。 要么用另一个控制器文件把你的文件夹弄得乱七八糟,要么你很快把它写在唯一会用到它的地方

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

  1. 这个控制器只能在这里使用吗?
  2. 体积小巧吗

如果这两个问题的答案都是“是”,请直接写下来。

这样做的主要原因是这样的小型控制器很容易维护。这非常有用,尤其是当您的控制器将用于非常小的功能并且您真的不需要专门的控制器时。

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