2013-03-21 9 views
5

voglio ottenere qualcosa di simile:ng-repeat senza elemento HTML (questa volta davvero senza alcuna)

Line 1<br> 
Line 2<br> 
Line 3<br> 
Line 4<br> 
Line 5<br> 

utilizzando ng-repeat. Le linee dovrebbero essere separati da nulla se non <br>

+2

Vorrei usare una [direttiva] (http://docs.angularjs.org/guide/directive) per questo che prende una serie di "linee" e le visualizza come tali, ad es. ''. Devo correre altrimenti mi piacerebbe mettere insieme un esempio per te. Controllerò questa domanda più tardi quando sarò libero. –

+0

Grazie. Mi chiedo sempre quale sia la capacità di Angular di fare una soluzione complessa per le cose più semplici. – Paul

risposta

3

Ecco una direttiva semplicistica che hard-codifica la <br>

HTML:

<p hidden-repeat="lines"></p> 

app.directive('hiddenRepeat',function($parse){ 
    return { 
    link: function(scope, elem, attr){ 
     var data = $parse(attr.hiddenRepeat)(scope); 
     if(data){ 
     for (var i=0;i< data.length;i++){ 
      elem.append(data[i]+ "<br />"); 
     } 
     } 
    } 
    }; 
}); 

vederlo in azione: http://plnkr.co/edit/Y8eahPYmBr5ohbWCInde?p=preview

Questa soluzione consente per specificare la direttiva in un attributo (In questo caso, hidden-repeat). Utilizzando la versione dell'attributo di una direttiva, è possibile specificare l'elemento di wrapping (in questo caso, un paragrafo).

+0

+1 Mi piace di più questa versione - Non sono del tutto sicuro del motivo per cui ho usato una direttiva elemento per questa attività. Ho rimosso la mia risposta e ho modificato il tuo in modo che non rimandi più alla mia precedente risposta. –

+0

Inizialmente avevo fatto una direttiva sugli elementi, ma mi stava sconcertando che non riuscivo a rimuovere/escludere completamente la questione, il che mi ha fatto guardare all'approccio dell'attributo. – checketts