Ho un oggetto DTO che ha un parametro Date. Sto avvolgendo questo Dto in un oggetto del modello di vista le cui proprietà sono quindi vincolanti per la mia vista su un'etichetta.Perché angularjs Digest va in loop infinito con funzione getter di data
<label class="form-control">{{controller.ViewModel.Date}}</label>
Nel modello di vista ho un getter quindi. (Sto usando dattiloscritto)
public get Date(): Date {
return new Date(Date.parse(this.dto.Date));
//return moment(this.dto.Date).toDate();
}
il emessa JavaScript:
Object.defineProperty(ViewModel.prototype, "Date", {
get: function() {
return new Date(Date.parse(this.dto.Date));
},
enumerable: true,
configurable: true
});
Credo che la ragione per cui sto creando una nuova data nel getter e angolare pensa che questo significa sono sempre nuove date e continua a ricevere la data fino a quando il modello si stabilizza, causando così un loop infinito.
Perché è angolare farlo?
Perché continua a chiamare il getter più e più volte, cosa c'è di sbagliato nel chiamarlo una volta sola?
Posso dire angolare per chiamare solo il getter una volta e accettare il valore è dato?
Quale versione di angolare stai usando? – SpykeBytes
angolare eseguirà sequenze consecutive fino a quando il risultato di tutti gli osservatori si stabilizzerà. Qui, ogni volta che l'osservatore restituisce un oggetto diverso, generando così il loop infinito. A volte è possibile aggirare questo usando toString() sul risultato quando viene chiamato da un modello. Esempio: '{{controller.ViewModel.Date.toString()}}' – BiAiB
Perché non si memorizza il risultato della funzione in una variabile $ scope e quindi si utilizza l'HTML, anziché il collegamento diretto alla funzione –