Ich benutze Angular 1.5.8. Ich habe eine Komponente in einer Komponente. Die übergeordnete Komponente hat ein div mit ng-show
, das entscheidet, wann die untergeordnete Komponente angezeigt werden soll.Todo-Liste dauert 30 Sekunden, um zu erscheinen
Die übergeordnete Komponente ...
function ScheduleController() {
var ctrl = this;
ctrl.openTodo = function() {
ctrl.isTodoVisible = true;
}
}
angular.module('myApp').component('userTodoDisplay', {
template: `
<button click="ctrl.$openTodo()"></button>
<div class="my-todo" ng-show="$ctrl.isTodoVisible">
<eb-todo schedule-id="$ctrl.selectedScheduleId" connected-to-project="$ctrl.selectedScheduleConnectedToProject"
permissions="$ctrl.User.Role" close-click="$ctrl.closeTooltip()"></eb-todo>
</div>
`,
controller: [UserTodoDisplayController]
});
Die folgende untergeordnete Komponente dauert fast 30 Sekunden zu erscheinen, sobald ich isTodoVisible
zu true
gesetzt.
Ich habe andere Probleme wie diese auf SO gesehen, aber diese Probleme mit ngAnimate. Ich bin nicht mit ngAnimate.
Ich habe alle meine anderen Komponenten auf die gleiche Weise erstellt, wie ich diese erstellt habe. Ich habe nur Probleme, die Komponente zu erscheinen, jetzt, wo ich ng-show
benutze. Warum dauert die ebTodo
Komponente ca. 30 Sekunden nach der Einstellung isTodoVisible
bis true
?
Die DevTools zu helfen kann fähig sein:
sicher in verdauen auszulösen sowohl verdauungs bewusst und verdauungs nicht bewusst Aufruf Kontexten kann
$evalAsync
Methode stattdessen verwendet werden 1. Sie ein Profil erzeugen könnte. 2. Möglicherweise können Sie während der Arbeit des Browsers auf Pause drücken, damit Sie den Stapel sehen und prüfen können, welche Arbeit er gerade ausführt. – joeytwiddle@joeytwiddle Tolle Idee. Ich habe es versucht. Es sieht so aus, als ob der Browser während der Aufnahme viel getan hat, aber ich bin mir nicht sicher, was ich mit diesen Informationen anfangen soll. – Targaryen
Rendern Sie es innerhalb einer ng-Wiederholung? Nachdem ich 'isTodoVisible' auf 'true' gesetzt habe, würde ich versuchen,' $ timeout (function() {$ scope. $ Apply();}) '' zu verwenden. –