我有我的客户连接到Socket.io服务器的服务:Angular.js:我如何避免缓存服务?
var serviceSocketIo = angular.module('myApp.services', []);
serviceSocketIo.factory('mySocket',['$rootScope', '$routeParams', function ($rootScope, $routeParams) {
var base = $rootScope.base, //base = 'http://localhost:3000'
channel = '/' + $routeParams.game,
url = base + channel,
mySocket;
console.log('service: connection to ' + url);
mySocket = io.connect(url);
return {
base: base,
channel: channel,
socket: mySocket,
on: function (eventName, callback) {
mySocket.on(eventName, function() {
var args = arguments;
$rootScope.$apply(function() {
callback.apply(mySocket, args);
});
});
},
emit: function (eventName, data, callback) {
mySocket.emit(eventName, data, function() {
var args = arguments;
$rootScope.$apply(function() {
if (callback) {
callback.apply(mySocket, args);
}
});
})
}
};
}]);
请注意,命名空间依赖于$ routePrams PARAMATERS。
我需要的是在实例化之前从缓存中删除服务。所以我会确保这些服务将客户端连接到正确的URL。或者如果有其他方法来强制我的服务检查参数?
恐怕这个解决方案不能帮助我,让我更多地解释我的问题:我在我的注射服务两型动物控制器,所以当我的路线相对例如加入到第一控制器,当然,我的服务将我连接到相对于此路线的名称空间,但如果我更改路线,我的服务仍将我连接到相同的路线。这是因为,正如你所说的,服务/工厂方法只运行一次,因此它们被缓存。而且我不知道如何避免这种行为。 – hamou92 2013-04-30 01:16:03