Angularjs显示基于控制器变量的指令

时间:2014-11-01 03:30:13

标签: angularjs angularjs-directive angularjs-scope

我有一个只加载这样的模板的指令:

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;
    });
});

有没有办法简单地使指令使用控制器的范围变量?或者在这种情况下使用的常用方法是什么?

1 个答案:

答案 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'
  };
});

您可以编写一个服务来保存范围变量,这样您就可以从代码的不同部分访问变量的同一个实例。

  

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