Использование сокета и ангуляра не приводит к выводу данных через $ scope - PullRequest
0 голосов
/ 18 декабря 2018

Я использую файл на странице клиентского сервера

var SelectChat = angular.module('SelectChat', 
['ngRoute']).config(['$routeProvider',function($routeProvider){
$routeProvider.when("/",{
    templateUrl: 'index.html',
    controller: 'NameInfo'
});
}]).factory('socket',['$rootScope',function ($rootScope) {
var port = 8080;
var socket = io.connect('http://localhost:' + port);

return {
    on: function(eventName, callback) {
        socket.on(eventName,callback);
        console.log(callback);
    },
    emit: function(eventName,data){
        socket.emit(eventName,data);
        console.log(data);
    }
}
}]);
SelectChat.controller('NameInfo',function($scope,socket,$rootScope){
socket.on('allMessage',function(date){
$scope.nameChat = date.rows[0].nameChat;
console.log(date.rows[0].nameChat + "  Hellloolololo");
});

файл на сервере

io.on('connection', async function (socket) {
socket.emit('allMessage', await con.then(function (res) {
     return res;
 }));

index.html

 <html>
 <head>
<meta charset="utf-8">
<title>chat</title>
<script src="javascripts/socket.io.js"></script>
<script src="javascripts/jquery.js" charset="utf-8"></script>
<script src="javascripts/angular.js"></script>
<script src="javascripts/angular-route.js"></script>

<script src="javascripts/main.js" charset="utf-8"></script>
<link href="stylesheets/main.css" rel="stylesheet">
<!-- Здесь можете подключить ваш main.css -->
</head>
<body >
<header >
<h1>Chat</h1>
</header>

<main>
<div ng-app="SelectChat" ng-controller="NameInfo">
<p>Привет</p>
<p>{{nameChat}}/</p>
<p><span ng-bind="nameChat">{{nameChat}}</span></p>
</div>

</main>
<footer>
<input type="text" name="text" size="100">
<button type="button" name="button" id="sendMsg">Отправить</button>
</footer>

</body>
 </html>

Я хочу отобразить на странице сервера клиентаданные с дб.Отправьте на страницу клиента, но в $ Scope нет данных.я не понимаю почему.Я пытаюсь отобразить данные в консоли на странице клиента, данные получили право.Я нахожу на коде stackoverflow, но я понимаю, как это мне помочь.

 on: function(eventName, callback) {
     socket.on(eventName, function() {
       var args = arguments;
       $rootScope.$apply(function() {
         callback.apply(socket, args);
       })
        });

Как использовать?Я не понимаю логической работы.

1 Ответ

0 голосов
/ 20 декабря 2018
on: function(eventName, callback) {
        socket.on(eventName,function(data){
            $rootScope.$apply(function(){callback(data)});
        });
    },
    emit: function(eventName,data){
        socket.emit(eventName,data);
        console.log(data);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...