我有一个只加载这样的模板的指令:
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 :(得分:1)
有两种主要方法可以访问指令中的某些范围变量, 第一个是使用scope:true
在指令内启用范围继承app.directive("sidebar", function(RESOURCE_URL) {
return {
scope: true,
templateUrl: RESOURCE_URL + 'sidebar.html'
};
});
允许您继承指令内部的外部作用域,另一种方式是通过使用控制器将控制器附加到指令:sideBarCtrl:
app.directive("sidebar", function(RESOURCE_URL) {
return {
controller: 'sideBarCtrl',
templateUrl: RESOURCE_URL + 'sidebar.html'
};
});
或您可以编写一个服务来保存范围变量,这样您就可以从代码的不同部分访问变量的同一个实例。