На моей странице у меня есть таблица с пользовательской директивы, которая показывает детальный вид ROW элемента, когда пользователь нажимает на кнопку детали:Access директива элемент из контроллера
<table ng-controller="MyController">
<tr ng-repeat="item in controller.items">
<td>{{item.name}}</td>
<td> <a href="#" ng-click="controller.loadDetails(item.id)">details</a>
</td>
</tr>
<tr ng-details details-colspan="2" ng-model="controller.details"></tr>
</table>
Директива:
.directive('ngDetails', function() {
return {
restrict: 'A',
require: "^ngModel",
replace: true,
template: '<tr class="detailsTemplate {{ngModel.cssClass}}"> \
<td colspan="{{detailsColspan}}" ng-bind-html="ngModel.data"></td> \
</tr>',
scope: {
detailsColspan: '@',
ngModel: '='
}
}
});
Вот demo.
В данный момент раздел сведений о деталях отображается хорошо, но он всегда находится внизу стола. Я хотел бы переместить мой элемент строки директивы в соответствующую строку элемента, но я не уверен, как получить доступ к элементу директивы внутри моего контроллера.
Мне нравится обходной путь, это проще, но загрязнение DOM с дополнительным элементом строки для каждого элемента не похоже на лучший подход. –
Если вы используете 'ng-if', то дополнительная строка не будет создана до тех пор, пока условие не будет выполнено и будет удалено, когда условие больше не будет выполнено. Недостатком является ng-if создает отдельную область, хотя, поскольку это директива с явной областью, которая не является большой проблемой. Если вы не имеете дело с тысячами строк, отображаемых сразу, то производительность вряд ли будет проблемой даже при использовании 'ng-show'. – Zimzat
hmm, выглядит как 'ng-if' может быть то, что я ищу. Есть ли способ анимировать элемент, когда он добавляется/удаляется с помощью 'ng-if'? –