У меня есть угловая директива для отображения модального окна. Он может принимать содержимое либо внутри линии между тегами HTML, либо указывать на шаблон. При использовании этой директивы я, кажется, имею нормальный доступ к $scope
, когда я использую преобразованную встроенную версию этой директивы, но когда я использую шаблон, я этого не делаю.Угловая область действия - шаблон включает vs inline transclude
Что мне здесь не хватает? Я сделал меньшую типовую директиву, которая имеет такое же поведение.
Демонстрация:http://fiddle.jshell.net/ahezfaxj/2
Инлайн Содержание Использование
<ang-test show="showBoolean">
<p>Content here!</p>
</ang-test>
Использование шаблона
<ang-test show="showBoolean" template="'myTemplate.html'"></ang-test>
Директива
app.directive("angTest", function() {
return {
template: function() {
return "<div class='test-container'>" +
" <div ng-if='show && template' ng-include='template'></div>" +
" <div ng-if='show && !template' ng-transclude></div>" +
"</div>";
},
restrict: "E",
replace: true,
transclude: true,
scope: {
template: "@",
show: "="
},
link: function ($scope, $element, attrs) {
if(value){
$element[0].style.display="block";
}else{
$element[0].style.display="none";
}
}
};
});
Да, но как я могу просто пройти весь объем через без необходимости указывать его в директиве? Я не хочу указывать все возможные переменные области для моего проекта в директиве. –
Вам не нужно создавать изолированную область ... (просто не определяйте ее в своей директиве), но вы должны быть очень осторожны при создании своей директивы, потому что смотрите здесь, что может произойти: http: //fiddle.jshell. нетто/ahezfaxj/5 / – sylwester