gpt4 book ai didi

javascript - View / Controller 不会使用 angularjs 中的 socket.io 使用 Push() 函数刷新

转载 作者:行者123 更新时间:2023-12-02 15:10:30 25 4
gpt4 key购买 nike

我正在尝试刷新我的 Angular 应用程序的 Controller 以从 socket.io 接收对象。一切工作正常,除了当我使用推送函数将新对象添加到变量时 View 不显示。这是我的代码。

Controller.js

app.controller('controller', function(){
var vm = this;
var socket = io.connect('http://localhost:3000');
//The variable that bends
vm.messages = [];

socket.on("addMsg", function(obj){
vm.messages.push({user: obj.user, content: obj.content, color:obj.col});
});


});

view.jade

    ...
body(ng-controller = "controller as con")
.messages
p Messages:
p(ng-repeat="array in con.messages") content: {{array.content}} , color: {{array.color}}

我的代码有什么问题?,目的是使用ng-repeat显示p标签中的所有内容。

最佳答案

来自 html5rocks article angular-websocket 的这个微型 Angular 工厂套接字服务将 socket.io 包装在 Angular 范围内。它执行自动 $rootScope.$apply()

app.factory('socket', function ($rootScope) {
var socket = io.connect();
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
});

关于javascript - View / Controller 不会使用 angularjs 中的 socket.io 使用 Push() 函数刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34818818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com