Voglio buttare via i dati nel mio observablearray ogni volta che ottengo dati dal mio server.removeAll vs empty an array with [] in knockoutjs
Qual è la differenza di funzionalità tra
self.myArray([]);
vs
self.myArray.removeAll();
Voglio buttare via i dati nel mio observablearray ogni volta che ottengo dati dal mio server.removeAll vs empty an array with [] in knockoutjs
Qual è la differenza di funzionalità tra
self.myArray([]);
vs
self.myArray.removeAll();
Dal punto risultato finale di vista non v'è alcuna differenza tra i due chiamata, in modo si finirà con myArray
contenente nessun elemento
Tuttavia, vi sono una piccola differenza (se non si preoccupano i diversi valori di ritorno):
self.myArray([]);
sarà sostituisce l'istanza matrice sottostante con un array vuoto appena creato.
Mentre la volontà
self.myArray.removeAll();
rimuove tutti gli elementi dalla matrice sottostante, ma manterrà l'istanza matrice.
Quindi, se si dispone di più ko.observableArray
utilizzando la stessa matrice underlaying potete vedere la differnce tra le due chiamate:
Demo JSFiddle.
grazie per il campione. – msfanboy
Dal punto di vista della memoria, 'removeAll()' è meglio? per esempio. rilascerà tutta la memoria da qualsiasi cosa si trattiene sull'array? –
Il primo crea un nuovo osservabile e tutti gli abbonamenti a quello vecchio si perdono . – DCoder
@DCoder scusa ho fatto un errore di battitura ... per favore dai un'occhiata di nuovo. – msfanboy
Puoi leggere il codice sorgente di Knockout per vedere come è implementato. Entrambi cancellano l'array, l'unica differenza evidente è ciò che restituiscono: la prima opzione restituisce l'osservabile stesso, il secondo restituisce i vecchi valori. – DCoder