Я новичок в angularJs, и я хочу создать директиву custome, которая будет отображать некоторые элементы из ng-repeat. Поэтому у меня есть следующая директива custome:
(function(module) {
module.directive('portfolioList', function () {
return {
restrict: 'A',
templateUrl: 'util/portfolio-list.tpl.html',
controller: function($scope){
var items = [
{
name: 'SomeName',
imgLink: 'imgLink',
urlLink: 'urlLink'
}
];
$scope.portfolioItems = items;
}
};
});
}(angular.module("ab4.site.util")));
И html-код:
<li class="col-md-4 mix" ng-repeat="item in portfolioItems">
<a href="{{item.urlLink}}" >
<!-- Portfolio image -->
<img src="{{item.imgLink}}" >
<!-- Portfolio name, activated on hover -->
<div>
<h4>{{item.name}}</h4>
</div>
</a>
</li>
И я хочу создать новую директиву custome, которая заменит:
<a href="{{item.urlLink}}" >
<!-- Portfolio image -->
<img src="{{item.imgLink}}" >
<!-- Portfolio name, activated on hover -->
<div>
<h4>{{item.name}}</h4>
</div>
</a>
Но я не знаю, как связать элемент с ng-repeat с новой директивой custome.
Вы можете использовать наследование сферы, просто создайте новую директиву без изолированной области (scope = false
или не добавляйте область видимости) и обратитесь к области scope.item
внутри функции link
или к элементу внутри шаблона.
item
через атрибут:<foo item="item">
ng-repeat
уже создает изолированную область для каждого элемента. Если OP не нужно повторно использовать эту директиву внеng-repeat
, использование изолированной области видимости не требуется.