Sto provando a creare una direttiva personalizzata che riorganizza il contenuto come una griglia. Voglio escludere il risultato di una direttiva ng-repeat
e quindi riordinare gli elementi risultanti.Come posso ottenere un handle sugli elementi figli di ng-repeat nella mia direttiva personalizzata?
Il problema è quando chiamo il metodo element.children()
all'interno della funzione di collegamento, ho un array vuoto perché la direttiva ng-repeat
non è ancora stata sottoposta a rendering e viene interpretata come un commento.
In caso contrario, la direttiva funziona in modo ottimale se il suo contenuto è "statico".
Il codice HTML
<grid n='6'>
<div ng-repeat="i in [1,2,3]"></div>
</grid>
mia direttiva con solo le interessanti pezzi di codice:
app.directive('grid', [function() {
return {
restrict: 'E',
replace: true,
transclude: true,
template: "<div ng-transclude></div>",
link: function (scope, grid, attrs) {
// With an ngRepeat transcluded, els result in an empty array
var els = grid.children();
// ...
};
}]);
Che cosa mi manca?
All'interno della vostra funzione di collegamento che si può provare a utilizzare $ timout (function() {// Accesso alla Rete bambini}, 0); – Chandermani
Questo funziona davvero, ma questo metodo è affidabile? –
In realtà il modello secondario viene sottoposto a rendering dopo la funzione di post-link, quindi è necessario aggiungere $ timout, funzionerà in quanto introduce qualche ritardo. – Chandermani