gpt4 book ai didi

javascript - Angular .js : How can I avoid caching services?

转载 作者:行者123 更新时间:2023-11-30 18:03:48 24 4
gpt4 key购买 nike

我有一项服务将我的客户端连接到 Socket.io 服务器:

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 参数。

我需要的是在实例化之前从缓存中删除服务。所以我会确保服务会将客户端连接到正确的 url。或者是否有其他方法强制我的服务检查参数?

最佳答案

angular 中的工厂和服务是单例的,没有其他配置可以使它们成为单例。如果你想要这样的控制,你需要在 $provide 对象上使用方法:

获取访问权限以使用 app.config 提供:

app.config(function($provide) {
// Now you have provide
});

您可以使用它使用您从 $get 返回的内容来创建您自己的自定义实例化策略:

$provide.provider('foo', function(){
this.$get = function(dep) {...}
});

引用:http://slides.wesalvaro.com/20121113/#/2/6

关于javascript - Angular .js : How can I avoid caching services?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16290535/

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