如果范围被隔离,那么范围。$ parent在以下指令中表示什么?

时间:2014-12-22 19:59:55

标签: angularjs angularjs-directive angularjs-scope

我是角度指令的新手。我在以下指令中有点困惑:

app.directive('person', function() {
  return {
    restrict: 'EA',
    scope: {
      header: '='
    },
    transclude:true,
    link: function(scope, element, attrs, ctrl, transclude) {
      scope.person = {
        name: 'Directive Joe',
        profession: 'Scope guy'
      };

      scope.header = 'Directive\'s header';
      transclude(scope.$parent, function(clone, scope) {
        element.append(clone);
      });
    }
  };
});

Html:

<body ng-controller="MainCtrl">
  <person header="header">
    <h2>{{header}}</h2>
    <p>Hello, I am {{person.name}} and,</p>
    <p>I am a {{person.profession}}</p>
  </person>
</body>
此指令中的

scope用作隔离的。那么scope.$parenttransclude函数中代表了什么。如果scope被隔离,那么scope.$parent代表$rootScope。是吗 ?请详细解释。谢谢!

1 个答案:

答案 0 :(得分:0)

您的范围。$ parent表示父范围。父范围取决于您放置指令的位置。

例如,如果您有以下内容:

<div ng-controller="MyController">
    <person header="Hello World!"></person>
</div>

然后,您的父范围将是MyController中的范围。如果你没有在上面的情况下声明ng-controller,那么scope。$ parent将代表$ rootScope。