Sto cercando di fare in modo che la fabbrica Thing effettui una richiesta HTTP e sia in grado di utilizzare la risposta nel mio controller.Perché devo usare angular.copy nella mia fabbrica?
Nella mia fabbrica devo fare
angular.copy(data, arr)
. Semplicemente facendoarr = data
non funziona. Perchè è questo?angular.copy()
solo una) cancella tutto, dallaarr
e b) scorredata
e assegna roba daarr
. L'unica differenza tra questo earr = data
è chearr
punti adata
piuttosto che una nuova copia didata
. Perché dovrebbe essere così importante? E perché non faarr = data.slice(0)
lavoro (da quanto ho capito, è praticamente la stessa diangular.copy)
?Qual è il modo migliore per realizzare il mio obiettivo? (Utilizzare la fabbrica correttamente)
main.html
<div class="container">
<div class="page-header">
<h1>Test App</h1>
</div>
<ul>
<li ng-repeat="thing in things">{{thing.name}}</li>
</ul>
</div>
main.controller.js
angular.copy lavora per gli oggetti o array, sono dati un oggetto per caso? A proposito, dovresti fare uso di sollevamento ed estrarre le tue funzioni anon in funzioni con nome e passare semplicemente il nome della funzione al metodo factory e controller. Rende molto più facile capire i componenti di un modulo. – Robert
'data' è una matrice di oggetti. –
Funziona perché arr (array) è un riferimento ed è necessario conservare il riferimento affinché i bind di ambito funzionino.Altrimenti, stai semplicemente sovrascrivendo arr con un nuovo riferimento - che è completamente diverso dal riferimento originariamente legato all'ambito. – pixelbits