я пытаюсь объяснить мою проблему:Вложенные директивы, без шаблона, но нг-повтора в родительской директиве
У меня есть пользовательская директива, которая содержит список элементов (в данный момент элементы являются пользовательскими директивами, но я не Не знаю, правильно ли это. Для каждого элемента мне нужно взять некоторые значения и поместить значения внутри родительской директивы, где у меня есть два разных ng-repeat. Возможно, кто-то думает, что я должен использовать эти значения внутри вложенной директивы и использовать ng-transclude в родительском. Но я не могу, потому что вложенная директива должна иметь два разных шаблона. Может быть, это не ясно, так что я мог видеть мой код:
index.html (где я использую директиву)
<rh-portfolio>
<rh-portfolio-image id="portfolio-item-six" url="images/portfolio/thumbnail/img-01.jpg" description="" category="construction"></rh-portfolio-image>
<rh-portfolio-image id="portfolio-item-seven" url="images/portfolio/thumbnail/img-02.jpg" description="" category="construction"></rh-portfolio-image>
<rh-portfolio-image id="portfolio-item-eight" url="images/portfolio/thumbnail/img-03.jpg" description="" category="construction"></rh-portfolio-image>
<rh-portfolio-image id="portfolio-item-nine" url="images/portfolio/thumbnail/img-04.jpg" description="" category="construction"></rh-portfolio-image>
<rh-portfolio-image id="portfolio-item-ten" url="images/portfolio/thumbnail/img-05.jpg" description="" category="construction"></rh-portfolio-image>
</rh-portfolio>
portofolio.js (там, где родительские и вложенные директивы есть)
.directive('rhPortfolio', function() {
return {
restrict: 'E',
replace: true,
templateUrl: '/partial_views/directives/templates/portfolio.html',
scope: {},
controller: ['$scope', function ($scope) {
var images = $scope.images = [];
$scope.select = function (image) {
angular.forEach(images, function (image) {
image.selected = false;
});
image.selected = true;
};
this.addImage = function (image) {
if (image.length === 0) {
$scope.select(image);
}
images.push(image);
};
}]
};
})
.directive('rhPortfolioImage', function() {
return {
restrict: 'E',
replace: true,
require: '^^rhPortfolio',
link: function (scope, element, attrs, portfolioCtrl) {
portfolioCtrl.addImage(scope);
}
};
});
И в конце концов, шаблон директивы
...
<div class="tab-content tg-img-border"><!--portfolio-item-one-->
<div role="tabpanel" class="tab-pane fade in active" ng-repeat="image in images" id="{{ image.id }}">
<figure><img src="{{ image.url }}" alt="{{ image.description }}"></figure>
</div>
</div>
... <!-- Here in the middle, there is a lot of code that must not be replicated -->
<div role="presentation" ng-repeat="image in images" class="active portfolio-item grid-item {{ image.category }}">
<div class="product-box">
<a href="#{{ image.id }}" aria-controls="{{ image.id }}" role="tab" data-toggle="tab">
<figure><img src="{{ image.url }}" alt="{{ image.description }}"></figure>
...
</a>
</div>
</div>
...
Как вы можете видеть, вложенная директива не имеет уникального шаблона .. поэтому я решил использовать два разных ng-repeat. Между двумя ng-repeat существует код, который не следует повторять, поэтому означает, что в любом случае он должен находиться внутри родительской директивы.
В любом случае, мой код не работает ... Я не понимаю, почему .. perhpas, потому что пытаюсь использовать атрибут элемента изображения, который определен в контроллере родителя, но он заполняется из вложенная директива.
EDIT Здесь вы можете увидеть проблему .. В нижней части страницы, вы должны увидеть портфолио, с изображениями ... но что-то не работает: http://simonerh.altervista.org/_test/
Здесь вы можете см VERSIONE без Angularjs (так, что я ожидал увидеть): http://simonerh.altervista.org/
EDIT2 Вот версия Plunker http://plnkr.co/edit/nf2bVkNujtb69WRfs0I7?p=preview
Может кто-нибудь мне помочь? thanx
* «не работает» * не является правильной постановкой задачи, которая дает кому-либо любую информацию об устранении неполадок. Это может означать что угодно: от пустой страницы до мелочей. Вопрос обновления со всеми соответствующими деталями отладки и демонстрацией действительно поможет также – charlietfl
Трудно объяснить .. Я не вижу изображения ... Из «инструментов разработчика» в Chrome я просто вижу эту ошибку: «Не удалось загрузить ресурс: сервер ответил «Статус» 404 (не найден) «http: // localhost: 2060 /% 7B% 7B% 20image.url% 20% 7D% 7D», где 'image.url' является угловым, как вы можете видеть из шаблона директивы – Ciccio
Подождите, я пытаюсь опубликовать сайт, чтобы вы могли увидеть эффект моей директивы. Тем не менее, я думаю, что я думал, что директива совершенно неверна. – Ciccio