ich einen Login-Controller seinSteuerungsbereich variabel Laden nicht bis Refresh
myApp.controller('LoginCtrl', ['$scope', '$http','$location', function($scope, $http, $location) {
$scope.login = function() {
var data = JSON.stringify({user: $scope.user.id, password: $scope.user.password, type: "m.login.password"});
$http.post("http://localhost:8008/_matrix/client/api/v1/login", data).then(function mySuccess(details){
$http.post('/login',details.data).success(function(response){
console.log(response);
});
$location.path('home');
}, function myError(err) {
console.log(err);
alert("Invalid username/password")
});
};
}]);
und eine Heimsteuerung
myApp.controller('HomeCtrl', ['$scope', '$http','$location', function($scope, $http, $location) {
console.log("Hello World from home controller");
var refresh = function() {
$http.get('/roomNames').success(function(response) {
console.log("I got the data I requested");
$scope.roomNames = response;
});
}
refresh();
}]);
Wie zu sehen ist, wenn die Login-Daten korrekt sind, die LoginCtrl die Route ändert sich zu home.html.
Wenn ich jedoch die Anwendung ausführen und erfolgreich anmelden, soll die HomeCtrl eine Anforderung an den Server für Daten für den angemeldeten Benutzer anfordern.
Was ich will ist, dass diese Daten als eine Liste in der home.html geladen werden. Hier ist mein home.html
<h3 class="subHeader"> Rooms </h3>
<ul class="nav nav-sidebar">
<!-- <li class="active"><a href="#">Overview <span class="sr-only">(current)</span></a></li> -->
<li ng-repeat="room in roomNames"><a>{{room}}</a></li>
</ul>
jedoch auf der erfolgreichen Anmeldung die roomNames Variable ist zunächst leer. Sobald ich die Seite aktualisiere, wird die HTML-Liste ausgefüllt.
Wie stelle ich sicher, dass die Liste ausgefüllt wird, sobald die home.html-Seite geöffnet wird?
nicht sicher, aber ändern $ scope.roomNames = Antwort; . zu $ Umfang anwenden $ (function() {$ scope.roomNames = Antwort; }) –
versuchen $ http.get – user2950720
zurückzukehren Wenn Seite erstmals geladen wird sich diese Funktion aufgerufen? –