Hier ist eine praktische Antwort, mit freundlicher Genehmigung von Benutzer Kirill Slatin, der die Antwort als Kommentar gepostet. Praktisches Anwendungsbeispiel am Ende der Antwort.
Wenn, wie ich, können Sie dieses Antwortobjekt als Rahmen Variable verwenden müssen, sollte diese Arbeit:
$http.get('URL').success(function(data){
$scope.data = data;
$.fullCalender = $scope.data;
$scope.$apply()
});
$scope.$apply()
was das Antwortobjekt wird bestehen bleiben, so dass Sie diese Daten verwenden können.
-
Warum würden Sie brauchen, um dies zu tun?
Ich hatte versucht, eine "bearbeiten" Seite für meine Rezepte App zu erstellen. Ich musste mein Formular mit den Daten des ausgewählten Rezepts füllen. Nachdem ich meine GET-Anfrage gemacht und die Antwortdaten an die $ scope.form übergeben habe, bekam ich nichts ... $scope.$apply()
und Kirill Slatin half mir sehr. Prost Kumpel!
Hier ist das Beispiel aus meinen editRecipeController:
$http.get('api/recipe/' + currentRecipeId).then(
function (data) {
$scope.recipe = data.data;
$scope.form = $scope.recipe;
$scope.$apply()
}
);
Hoffnung, das hilft!
Gibt es eine Möglichkeit, dies zu vermeiden? Javascript ist single-threaded, und eine synchrone HTTP-Anfrage wird den GESAMTEN BROWSER blockieren, während er auf eine Antwort wartet. Dies sollte nicht Ihre bevorzugte Lösung sein. – GregL
Könnten Sie nicht einfach den Aufruf von fullCalendar in den Erfolgsrückruf verschieben und Daten gleich dem Datenarg des Rückrufs setzen? – Scott
Wenn ich Fullcalendar-Daten im Callback verwende, wird es nicht in der Vorlage angezeigt. – Dipak