2016-11-15 37 views
1

這可能是遲到了遊戲角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在這個特定的情況下,我認爲這將是困難的,因爲控制器是頂級控制器。但事實上,如果你沒有構建一個可重用的組件,並且它的大小有限,那麼通過一切手段將它放在父控制器中。 –

1

主要的原因是,它是易於維護的小型控制器這樣。這非常有用,特別是如果您的控制器將用於非常小的功能,並且您不需要專門的控制器。

特別是如果應用程序是大,這有助於保持組織的樹。