В тот момент, когда я почувствовал, что достаточно понял о Transclude
, я наткнулся на это утверждение:
Transclude allows us to pass in an entire template, including its scope, to a directive.
Doing so gives us the opportunity to pass in arbitrary content and arbitrary scope to a directive.
Означает ли это, что к элементу Transclude прикреплена область действия, и ее можно передать директиве? Если это правда, то я не могу получить доступ к этому свойству области внутри шаблона директивы.
Позвольте мне сделать пару шагов назад и объяснить с помощью кода, что я пытаюсь сделать:
Моя директива directive-box
, а transclude: true
определена в объекте определения директивы (DDO).
Теперь есть дочерний элемент Div, который должен быть включен.
<div ng-controller='TransCtrl'>Inside Transclude Scope : {{name}}</div>
и к нему подключен контроллер TransCtrl
.
Теперь я пытаюсь получить доступ к свойству $scope.name
, которое является частью TransCtrl
, с уровня директивы после определения этого в DDO:
scope: {
title: '@directiveTitle',
name: '='
}
Это возможно ?
Это больше похоже на родительскую область, пытающуюся получить доступ к свойству дочерней области, разрешено ли это в прототипном наследовании JavaScript? Или есть что-то еще, что мне нужно знать??
Если это невозможно, что означает первое утверждение?
Transclude allows us to pass in an entire template, including its scope, to a directive.
ОБНОВЛЕНИЕ 1:
Моя основная задача заключается в том, что контроллер должен оставаться с элементом Transclude, но мы должны иметь возможность передать его область (элемент Transclude) в директиву, а затем директива должна иметь возможность использовать эту область, т. е. name from TransCtrl controller
.
<div ng-controller='TransCtrl'>Inside Transclude Scope : {{name}}</div>
Вышеприведенная строка кода должна оставаться как есть.
Я могу быть совершенно неправ в своем вопросе, но, пожалуйста, дайте мне, если это можно сделать.