2014-11-01 70 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