У меня есть директива, которая должна динамически добавлять некоторые div в шаблон. Дело в том, что каждый раз я добавляю новый, созданный до того, как его заменят новым контентом. Я знаю, что это связано с изолированием сферы действия директивы, но она, похоже, не работает. Я пробовал scope: {}
и scope: true
с тем же результатом.Изолирующие области в Угловой директиве
Директива:
angular.module('bucket.directives', [])
.directive('bucketList', ['$compile', function($compile) {
var viaUrlTemplate = '<span class="bucketItem viaUrl">{{ displayName }} <i class="icon-delete">x</i></span>';
return {
restrict: 'A',
link: function(scope, element, attrs) {
scope.$on('urlBucketAdded', function(event, bucketInfo) {
scope.displayName = bucketInfo.bucketName;
scope.$apply(function() {
var content = $compile(viaUrlTemplate)(scope);
element.append(content);
});
});
}
}
}]);
HTML, выглядит примерно так:
<div bucket-list class="bucketList">
// new elements in 'viaUrlTemplate' get inserted here
</div>
Так что, когда я пытаюсь добавить новые элементы с DISPLAYNAME -> Содержание 1, Content 2 и содержание 3 я получаю:
<div bucket-list class="bucketList">
<span class="bucketItem viaUrl"> Content 3 <i class="icon-delete">x</i></span>
<span class="bucketItem viaUrl"> Content 3 <i class="icon-delete">x</i></span>
<span class="bucketItem viaUrl"> Content 3 <i class="icon-delete">x</i></span>
</div>
Спасибо!
Почему бы не использовать 'ng-repeat' вместо этого? То, что вы пытаетесь отобразить, не имеет ничего сложного, требующего специальной директивы. – Claies