2013-12-19 55 views

回答

0

是的,隔離範圍與控制器無關。你的問題更多的是如何使用控制器(它在使用範圍方面不會改變)。

當您需要指令時,控制器很有用。如果您有一個叫做menu的指令,另一個指令叫menu-item,並且您想要例如在menu指令中註冊您的所有menu-item,那麼您將創建一個控制器。

當您的menu-item做了require: 'menu'它需要的是menu控制器,而不是指令本身。

然後你就可以有一個像指令:

angular.module('app').directive('menu', function() { 

    return { 
     scope: {}, 
     controller: function($scope) { 
     $scope.foo = "foo"; 
     this.register = function(scope) { 
      // register child here 
     }; 
     } 

}); 

$scope.foo可以通過menu模板訪問,但是this.register不能。

當您在menu-item中需要menu時,您無法訪問$scope.foo,但您可以訪問this.register

TL; DR;範圍類型和控制器不相關。

例如:http://plnkr.co/edit/fzbSnhxN9rp4Ct5kvB9i?p=preview