【问题标题】:Get error : [$injector:unpr] Unknown provider: socketProvider <- socket <- LogCtrl获取错误:[$injector:unpr] 未知提供者:socketProvider <- socket <- LogCtrl
【发布时间】:2015-07-15 17:43:29
【问题描述】:

我是 AngularJs 和 nodejs 的新手,我有一个简单的聊天应用程序,其中 angular 作为客户端,socketio 作为服务器端。加载角度页面时出现错误

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

我的客户端

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-route.min.js"></script>
<script src="http://localhost:1337/socket.io/socket.io.js"></script>

<script type="application/javascript">
     socket = io.connect('http://localhost:1337/');
     angular.module('Log',['ngRoute'])

             .controller('LogCtrl',['$scope','socket','$location', function($scope,socket,$location){

                 console.log('ok baby !!');

                 $scope.addUser = function(){
                     socket.emit('init',$scope.user);
                     $location.path("/view/index.html");
                 };

             }]);
 </script>

<body  ng-app = "Log" >
<div class=" main"  ng-controller = "LogCtrl" style = "width: 300px; ">
<fieldset>
     <form  ng-submit = "addUser()">
         <h2 >Hello!!</h2>
         <input ng-model = "user" required  style = "width: 200px; " placeholder = "Nhập tên của bạn" >
         <input type = "submit" value = "OK">
    </form>
</fieldset>
</div>

请帮我看看我的客户出了什么问题


我尝试通过添加一些代码来重定向到 index.html

.config(['$routeProvider','$locationProvider', function($routeProvider,$locationProvider){
                 $routeProvider.
                             when('/main', {
                                 templateUrl: 'view/index.html',
                                 controller: 'ChatCtrl'
                             })
                 $locationProvider.html5Mode({
                     enabled: true,
                     requireBase: false
                 });
                 }])

             .controller('LogCtrl',['$scope','$location', function($scope,$location){

                         console.log('ok baby !!');

                         $scope.addUser = function(){
                             socket.emit('init',$scope.user);
                             $location.path("/main");
                         };
                     }]);

但它不起作用,总是重新加载那一边(log.html)

【问题讨论】:

    标签: angularjs node.js socket.io


    【解决方案1】:

    Socket 不应该依赖于控制器,因为它是您在脚本之外全局声明的变量。 service、factory、provide、constant、value等只能用于注入依赖。

    代码

    .controller('LogCtrl', ['$scope', '$location', function($scope, $location) {
        console.log('ok baby !!');
    
        $scope.addUser = function() {
            socket.emit('init', $scope.user);
            $location.path("/view/index.html");
        };
    }]);
    

    【讨论】:

    • Tks 很多,你救了我的命 :v
    • 正是我需要它来修复它
    猜你喜欢
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2016-03-26
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多