2015-05-20 2 views
0
включены через

у меня есть что-то вроде этого:

<my-directive name="form"><div ng-if="form.$submitted"></div></my-directive> 

и в моей директиве:

angular.directive('myDirective', function() { 
    return { 
     template: '<form name="{{ name }}" ng-transclude></form>', 
     transclude: true, 
     scope: { 
      name: '@' 
     }, 
     link: function(scope) { 
      console.log(scope.form.$submitted); //works here 
     } 
    } 
}); 

form.$submitted, кажется, не быть определена здесь? Но он определен внутри сферы действия директивы? Как я могу получить доступ к form.$submitted из HTML?

Спасибо!

ответ

2

Контент с добавлением (с ng-transclude) имеет разный объем, чем область выделения директивы.

Вы могли transclude вручную и применить изолята простор включены через содержание:

template: '<form name="{{ name }}"></form>', 
transclude: true, 
scope: { 
    name: "@" 
}, 
link: function(scope, element, attrs, ctrls, transcludeFn){ 
    transcludeFn(scope, function(contentClone){ 
    element.find("form").append(contentClone); 
    }); 
} 

но это немного неудобно для пользователя вашей директивы, так как теперь они имеют HTML, который ссылается на некоторые " волшебный переменные»(которые имеют, конечно, определенные вашу директиву), которые не являются очевидными для кого-то наблюдающего HTML:

<my-directive name="form"> 
    <pre>{{form}}</pre> 
</my-directive> 

Здесь не очевидно, что {{form}} относится.

Смежные вопросы