【发布时间】:2015-06-26 00:20:26
【问题描述】:
我有一个带有角度的网页,我在其中使用 ngroute 重定向到 3 个页面。
modulo_angular.config(function($routeProvider){
//config y defi de las rutas
$routeProvider.when("/", {
controller: "appUOM",
controllerAs: "apuom",
templateUrl: "home.html"
})
.when("/descargas", {
controller: "appSocket",
controllerAs: "apsocket",
templateUrl: "descargas.html"
})
.when("/opciones", {
controller: "appPhenomena",
controllerAs: "apphen",
templateUrl: "opciones.html"
});
});
我有 3 个工厂和 3 个不同的控制器。每个工厂都与一个控制器相关,因此即使页面更改,我也可以保留数据。
在一页“descargas”中,我有从 ym node.js 服务器接收数据的套接字。这是控制器:
function controladorSocket($http, factoryController, socket){
var vm = this;
vm.mensajes = factoryController.getMensajes();
socket.on('mensaje', function(data){
console.log(data.message);
factoryController.addMensaje(data.message);
});
}
这就是套接字工厂:
modulo_angular.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);
});
});
}
};
});
每次我从 descargas.html 切换到另一个页面并返回时,我都会收到与在那之前所做的更改一样多的套接字消息。
所以我认为我的问题来了,因为我的 socket.on('mensaje'... 函数应该转到另一个地方来避免这种情况。但我不知道该怎么做。
【问题讨论】: