Я довольно новый для Углового. Я хочу показать список лидеров моим пользователям. Для того, чтобы достичь этого, я создал контроллер и два вида услуг, как так:Доступ к Угловым службам взаимозаменяемым способом
// Controller
angular.module("App.Controllers.LeaderboardController", [
"App.Services.LeaderboardService"
])
.controller("LeaderboardController", ($scope, LeaderboardService) => {
$scope.users = LeaderboardService.fetch();
});
// Socket Service
angular.module('App.Services.SocketService', [
"socketio",
"App.Services.LeaderboardService"
])
.service('SocketService', function (io, $state, LeaderboardService) {
this.socket
.on("connect",() => {
console.log("Socket connected");
})
.on("get leaderboard data emit", (res) => {
LeaderboardService.users = res;
})
.on("disconnect",() => {
console.log("Socket disconnected");
});
});
// Leaderboard Service
angular.module('App.Services.LeaderboardService', [
"App.Services.SocketService"
])
.service('LeaderboardService', function (SocketService) {
this.users = [];
this.fetch =() => {
console.log("fetching...");
SocketService.emit("get leaderboard data");
}
});
Это поток:
LeaderboardController
проситLeaderboardService
о таблице лидеров информации.LeaderboardService
сообщаетSocketService
для подключения к серверу и получения информации о лидерах.SocketService
звонитLeaderboard○Service
и предоставляет необходимую информацию.
Однако есть проблемы. Оба SocketService
и LeaderboardService
зависят от каждого другого, поэтому Angular жалуется на это.
Circular dependency found: SocketService <- LeaderboardService <- SocketService
Я хочу немного избавиться от сложности. Есть ли способ сделать следующее:
// PSEUDO CODE
this.socket.on("get leaderboard data emit", (res) => {
angular.resolveController("LeaderBoardController", ($scope) {
$scope.users = res;
});
});
так что я могу позвонить и играть с контроллерами самостоятельно?
Было бы замечательно, если бы я смог узнать, как это сделать.
спасибо.
что ваш модуль socketio? можете ли вы опубликовать код или ссылку, если это внешний скрипт? – Gatsbill
В основном 'this.socket' на' SocketService' относится к 'io', который в основном является socket.io. Я только разместил соответствующую часть для моего вопроса. – Aris