Mam obiekt DTO, który ma parametr Date. Zawijam to DTO w obiekt modelu widoku, którego właściwości następnie wiążę moim zdaniem do etykiety.Dlaczego angularjs Digest przechodzi w nieskończoną pętlę z funkcją getter daty
<label class="form-control">{{controller.ViewModel.Date}}</label>
W modelu widokowym otrzymałem zatem narzędzie pobierające. (Używam maszynopis)
public get Date(): Date {
return new Date(Date.parse(this.dto.Date));
//return moment(this.dto.Date).toDate();
}
emitowane JavaScript:
Object.defineProperty(ViewModel.prototype, "Date", {
get: function() {
return new Date(Date.parse(this.dto.Date));
},
enumerable: true,
configurable: true
});
wierzę, że powodem, ponieważ tworzę nową datę w getter i kanciasty uważa, że oznacza to, że terminy są zawsze nowe i ciągle dostaje datę, aż model się ustabilizuje, powodując nieskończoną pętlę.
Dlaczego to robi?
Dlaczego ciągle dzwoni do gettera, co jest złego w tym, że dzwonisz tylko raz?
Czy mogę powiedzieć, kanciasty, aby po prostu zadzwonić do gettera i zaakceptować wartość, która jest podana?
Z jakiej wersji kątowej korzystasz? – SpykeBytes
kątowa będzie przeprowadzać kolejne trawienia do momentu ustabilizowania wyniku wszystkich obserwatorów. Tutaj za każdym razem, gdy obserwator zwraca inny obiekt, generuje nieskończoną pętlę. Czasami można obejść to, używając toString() na wyniku, gdy zostanie wywołany z szablonu. Np .: '{{controller.ViewModel.Date.toString()}}' – BiAiB
Dlaczego nie przechowujesz wyniku funkcji w zmiennej $ scope, a następnie użyjesz go w HTML zamiast bezpośredniego połączenia z funkcją –