gpt4 book ai didi

javascript - 将自定义服务注入(inject)不同模块时,AngularJS 中的未知提供程序

转载 作者:行者123 更新时间:2023-12-02 17:04:09 24 4
gpt4 key购买 nike

我对 AngularJS 相当陌生,一直致力于创建一个为网络沙箱应用程序包装 socket.io 的服务。

我在单独的文件中创建了一个“NetworkServices”模块:

(function(){
var app = angular.module('NetworkServices', []);
app.factory('$socket', ['', function(){
var Socket = {
ip: '127.0.0.1',
port: '8080',
socket: null,
Connect: function(ip, port, sock){
Socket.ip = ip;
Socket.port = port;
Socket.log('Connecting to ' + Socket.ip + ':' + Socket.port);
Socket.socket = window.io.connect(Socket.ip + ':' + Socket.port);
sock = Socket.socket;
}
};
return Socket;
}]);
})();

这是我尝试将服务注入(inject)的模块:

(function(){
var app = angular.module('server', ['ui.bootstrap', 'NetworkServices']);

app.controller('ServerCtrl',['$scope','$socket', function ($scope, $socket) {
var val = $scope;
val.test = true;

var self = this;
self.isCollapsed = false;
self.ip = '129.119.228.206';
self.port = '8080';
self.socket = {};

self.Connect = function(){
$socket.Connect(self.ip, self.port, self.socket);
};
}]);


app.directive('server', function(){
return {
restrict: 'E',
templateUrl: 'views/server.html',
controller: 'ServerCtrl',
controllerAs: 'server'
};
});


})();

当我将 $socket 服务添加到服务器模块时,出现以下错误:

Error: [$injector:unpr] Unknown provider: Provider <-  <- $socket

我已将“NetworkServices”模块添加为“Server”模块的依赖项,但我不知道为什么我无权访问 $socket 服务?有什么建议吗?

最佳答案

问题不在于注入(inject) $socket 服务,而在于创建它。在其定义中,您定义了一个名为 '' 的依赖项,而 Angular 无法创建该依赖项。

app.factory('$socket', ['', function(){...

应该是:

app.factory('$socket', function(){...

由于您的方法没有参数,因此它没有需要声明的依赖项。

关于javascript - 将自定义服务注入(inject)不同模块时,AngularJS 中的未知提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25414734/

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