2014-11-01 52 views
1

我有隻加載這樣的模板指令:Angularjs顯示了基於控制器的可變指令

app.directive("sidebar", function(RESOURCE_URL) { 
    return { 
     templateUrl: RESOURCE_URL + 'sidebar.html' 
    }; 
}); 

的HTML看起來像這樣:

<sidebar ng-controller="sidebarCtrl" ng-show="ready"></sidebar> 

而且控制器:

app.controller('sidebarCtrl', function($scope, authService) { 
    $scope.service = authService; 
    $scope.ready = false; 
    $scope.user = {}; 
    $scope.$watch('service.getUser()', function(value){ 
     $scope.user = value; 
     $scope.ready = true; 
    }); 
}); 

有沒有辦法簡單地使指令使用控制器的範圍變量?或者在這種情況下使用什麼常用方法?

+0

您可以簡單地用一個服務變量來保存常用的變量,在控制器和指令注入它既.. – 2014-11-01 03:43:27

+0

指令可以有控制器了。只需將'controller:'sidebarCtrl''添加到您的指令中,並從HTML中刪除'ng-controller =「sidebarCtrl」'。 – 2014-11-01 07:31:28

回答

1

有訪問您的指令裏面的一些範圍變量2種主要途徑, 第一種是通過使用範圍,使你的指令的內部範圍的產業,真正

app.directive("sidebar", function(RESOURCE_URL) { 
    return { 
     scope: true, 
     templateUrl: RESOURCE_URL + 'sidebar.html' 
    }; 
}); 

,讓你繼承外範圍您的指令內,其他方式是通過使用控制器控制器連接到您的指令:sideBarCtrl:

您可以編寫一個服務來保存您的範圍變量,這將允許您從代碼的不同部分訪問變量的同一個實例。

https://docs.angularjs.org/guide/services