我在客户端使用main.js文件。
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) {
var args = arguments;
socket.on(eventName,callback);
},
emit: function(eventName,data){
socket.emit(eventName,data);
}
}
}]);
SelectChat.controller('NameInfo',function($scope,socket,$rootScope){
socket.on('allMessage',function(date){
$scope.nameChat = date.rows[0].nameChat;
console.log($scope.nameChat + " <============");
});
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>
<div ng-app="hello" ng-controller="a">
<p>{{name}}</p>
</div>
</main>
<footer>
<input type="text" name="text" size="100">
<button type="button" name="button" id="sendMsg">Отправить</button>
</footer>
</body>
</html>
我的问题,我无法在客户端$ scope上显示。
答案:
socket.emit(eventName, data, function() {
var args = arguments;
$rootScope.$apply(function() {
if (callback) {
callback.apply(socket, args);
}
});
})
但不工作,情况没有改变。 此代码未显示在DB的客户端数据上。 我决定在socket.on的客户端上进行测试socket.on,我编写console.log(db的信息),我获取数据并在浏览器的控制台中显示,但是页面上未显示在客户端的数据。 我不了解逻辑工作。