我有一个SocketService(使用socket.io),我就这样调用我的后端服务器:
SocketService.on("get user data", (response) => {
DataService.data = response;
});
我有一个像这样的控制器:
...
.controller("UserController", ($scope, DataService) => {
SocketService.emit("get user data");
$scope.users = DataService.data;
});
现在,这是流程:
问题是,除非我再次点击按钮再加载UserController,否则我会看到一个空数组。所以,首先点击,我看到一个空数组。 1秒后再次点击,我看到用户数组。
有没有办法在Angular上做这样的事情?
// pseudo code
SocketService.emit("get user data");
Spinner.show();
SocketService.on("get user data", (response) => {
angular.controllers.resolve("UserController", ($scope) => {
$scope.users = response;
});
Spinner.hide();
});
答案 0 :(得分:0)
我不知道你的socket.io的SocketService,但是如果它是一个普通的角度服务并通过$ http调用后端我会做以下事情:
SocketService(注入$ http):
function get(url, config) {
return $http.get(url, config);
};
UserController(注入你的SocketService):
function getUserData() {
SocketService.get('myUrl', {})
.then(function(response) {
$scope.users = response.data;
});
}
我希望这会给你一个解决问题的冲动。