2014-12-22 59 views
2

我是新的角度指令。我在下面的指令混淆點點:

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:在此指令scope

<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.$parent代表transclude函數。根據我的說法,如果scope被隔離,那麼scope.$parent代表$rootScope。是嗎 ?請詳細解釋它。謝謝 !

+0

[$ rootScope](https://docs.angularjs.org/api/ng/service/$rootScope)角度中的每個範圍都繼承它 – vil

回答

0

您的範圍。$ parent代表父範圍。父範圍的內容取決於您放置指令的位置。

例如,如果您有以下幾點:

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

然後,你父範圍將是在myController的範圍。如果在上述情況下沒有聲明ng-controller,那麼scope。$ parent將表示$ rootScope。

+0

但是這裏範圍是isolated.means範圍不會繼承任何範圍。我錯了嗎 ? –

+0

隔離範圍是隔離作用域是,但仍然有辦法訪問隔離範圍內的父作用域。這是通過調用$ scope。$ parent,但$ scope本身仍然與任何繼承隔離。 –

相關問題