2016-11-15 8 views
1

Это может быть поздно в игре с Angular 2, являющимся новым ребенком на блоке, но я недавно наткнулся на это в углу проекта. Я не работал на многих угловых приложениях такого масштаба (в отношении членов команды содействия), и я хотел бы видеть, почему этот код реализован следующим образом:«Прямое вложение» ng-контроллеров. Это нормально?

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> 

Вопрос:

Я пытаюсь понять, почему/что рассуждения/польза будет назначать вложенные контроллеры, подобные этому, и не имеющие выделенных угловых контроллеров? Разве это не нарушение (предполагаемое) соглашение/смешивание разных целей?

ответ

1

В сущности, вы правы, но некоторые контроллеры имеют такую ​​ограниченную ответственность, что это меньшее из двух зол. Либо соедините ваши папки с другим файлом контроллера, либо вы быстро напишите его на только место будет использовано.

Короче вопросы вы должны спрашивать:

  1. Будет ли этот контроллер может быть использован только здесь?
  2. Это компактный размер.

Если у обоих из этих вопросов есть ответ «да», напишите его в строке.

+0

... это может быть несколько пуристской меня, но я не вижу преимущества просто иметь контроллер только для этого предмета? (Если бы это была директива или компонент, это было бы иначе). Но было бы ли это правильным утверждением в том, что если контроллер имеет только одно свойство, почему это свойство не является частью родительского элемента в первую очередь? –

+0

@ RohanBüchner в этом конкретном случае Я думаю, что это будет dificult, так как контроллер является контроллером верхнего уровня . Но действительно, если вы не создаете повторно используемый компонент, и он ограничен по размеру, то, во всяком случае, помещает его в родительский контроллер. –

1

Основная причина этого заключается в том, что легко поддерживать небольшие контроллеры, подобные этому. Это полезно, особенно если ваш контроллер будет использоваться для очень небольшой функции, и для этого вам не нужны специальные контроллеры.

Особенно, если приложение является большим, это помогает сохранить организованное дерево.