Quello che voglio fare, è quello di gestire transclude a mano e modificare il contenuto prima di inserisco nel DOM:Come modificare il contenuto escluso prima di compilare all'interno della direttiva?
return {
restrict: 'E',
transclude: true,
template: '<HTML>',
replace: true,
link: function(scope, element, attrs, ngModelCtrl, $transclude) {
var caption = element.find('.caption');
$transclude(function(clone) {
console.log(clone);
clone.filter('li').addClass('ng-hide'); // this don't work
clone.addClass('ng-hide'); // same this one
clone.attr('ng-hide', 'true'); // same this one
$compile(clone)(scope.$new()).appendTo(caption);
caption.find('li').addClass('ng-hide'); // and this
});
}
}
In angular.js fonte ho trovato questo esempio:
var templateElement = angular.element('<p>{{total}}</p>'),
scope = ....;
var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {
//attach the clone to DOM document at the right place
});
//now we have reference to the cloned DOM via `clonedElement`
ma quando aggiungo clonedElement.appendTo(caption);
all'interno della funzione di collegamento, aggiunge solo commenti con ng-repeat all'interno.
Ho bisogno di questo perché ho bisogno di nascondere tutti gli elementi in questo caso
<dropdown>
<li ng-repeat="item in items"><a>{{item.label}}</a></li>
</dropdown>
ho bisogno di modificare il modello prima di compilare o DOM dopo ng-repeat è espanso. Prima sarebbe meglio, perché sarò in grado di aggiungere la logica usando la direttiva ng-hide invece della classe ng-hide.