我有一個登錄控制器控制範圍變量不加載,直到刷新
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")
});
};
}]);
和家庭控制器
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();
}]);
正如所看到的,如果登錄信息是正確的,LoginCtrl改變路線是home.html的。
但是,當我運行應用程序併成功登錄時,HomeCtrl應該向服務器發出獲取請求以獲取登錄用戶的數據。
我想要的是將這些數據作爲home.html中的列表加載。這是我的家.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>
但是,成功登錄時,roomNames變量最初爲空。只要刷新頁面,html列表就會被填充。
如何在home.html頁面打開後立即填充列表?
不確定,但更改 $ scope.roomNames = response; 。 到 $範圍$申請(函數(){$ = scope.roomNames響應; }) –
嘗試返回$ http.get – user2950720
當頁面加載第一次沒有叫這個功能呢? –