Cha*_*tla 6 javascript sockets node.js angularjs
我有一个socket.io客户端 - 服务器设置与客户端上运行的AngularJS.
// Server.js
var io = require('socket.io')(server);
io.on('connection', function (socket) {
socket.on('message', function (msg) {
//console.log(msg);
console.log(msg);
io.emit('message', msg);
});
});
Run Code Online (Sandbox Code Playgroud)
如所观察到的,它实质上发出了message存储在变量中的数据的事件msg.
然后我有以下客户端代码.
var container = angular.module("AdminApp", []);
container.controller("StatsController", function($scope) {
var socket = io.connect();
socket.on('message', function (msg) {
console.log(msg);
$scope.frontEnd = msg;
});
});
Run Code Online (Sandbox Code Playgroud)
我现在面临一个奇怪的问题.当我编写以下代码片段进行打印时frontEnd,它不会显示.但是console.log(msg);工程和它向我展示了从变量发出的数据msg.
<body ng-app="AdminApp">
<div ng-controller="StatsController">
<p>{{frontEnd}}</p> //Doesn't show anything
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
谁能帮我吗?
您需要包装模型的更改(更改属性$scope),$scope.$apply(function() {})以便更新视图.
var container = angular.module("AdminApp", []);
container.controller("StatsController", function($scope) {
var socket = io.connect();
socket.on('message', function (msg) {
console.log(msg);
$scope.$apply(function() { $scope.frontEnd = msg; });
});
});
Run Code Online (Sandbox Code Playgroud)
$ apply()用于从角度框架外部以角度执行表达式.(例如,来自浏览器DOM事件,setTimeout,XHR或第三方库).因为我们正在调用角度框架,所以我们需要执行异常处理的适当范围生命周期,执行手表.
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |