javascript - angular 的错误消息 "Failed to instantiate module"仅在资源管理器中

标签 javascript angularjs

我正在尝试创建一个前端带 Angular 聊天应用程序。

我向聊天 Controller 添加了一个名为 isUserTyping 的新函数,并在 chrome 上进行了测试。它工作正常。

但是在资源管理器中,页面不会加载该功能(一旦我删除它,它就可以正常工作)。 我在 consoelo 中得到的错误是这样的:

“SCRIPT5022:[$injector:modulerr] 由于以下原因无法实例化模块 mymodule:错误:[$injector:nomod] 模块‘mymodule’不可用!您拼错了模块名称或忘记了加载它。如果注册模块,请确保将依赖项指定为第二个参数。”

我不知道这个错误是什么意思……我在下面附上了我的代码。

如果有人知道是什么导致了资源管理器中的这种情况,我会非常感激。

脚本 js:

var mymodule = angular.module('mymodule', ['ngRoute']);
mymodule.config(function($routeProvider) {
  $routeProvider
  .when('/', {
    templateUrl : 'pages/enter.html',
    controller  : 'SharedController'
  }) 
  .when('/chat', {
    templateUrl : 'pages/chat.html',
    controller  : 'cntrlChat'
  });
});


mymodule.factory('myService', function() {
 var savedData = {}
 var set=function (data) {
   savedData = data;
 } 
 function get() {
  return savedData;
}

return {
  set: set,
  get: get
}

});

mymodule.controller('SharedController', ['$scope', 'myService','$location',
  function($scope, myService, $location){ 

    $scope.updateMsg = function (msg) {
      myService.set(msg);
      $location.path("chat");
    }

    $scope.getMsg = function () {
      $scope.message = myService.get();
    }

  }]);

mymodule.controller("cntrlChat", ['$scope', 'myService','$q','$timeout',
  function($scope, myService,$q,$timeout){ 
   var socket = io();
   $scope.messages = [];
   $scope.room= myService.get();
   socket.emit('room', $scope.room);

   $scope.submit=function(){
    socket.emit('chat_message',{ room: $scope.room, msg: $scope.room+": "+$scope.insertedText });
    $scope.insertedText='';
    return false; 
  }

  socket.on('chat_message', function(msg){
    $scope.$apply(function() {
      $scope.messages.push(msg);

    });
  });

  socket.on('info_message', function(msg){
    $scope.$apply(function() {
      $scope.info=msg;

    });
  });


  $scope.isUserTyping= function() {
   var runTwoFunctionWithSleepBetweenThem=function(foo1, foo2, time) {
    $q.when(foo1()).then(() => $timeout(foo2, time));
  }
  runTwoFunctionWithSleepBetweenThem(function (){socket.emit('info_message', { room: $scope.room, msg: 'user is typing...' })},
    function (){socket.emit('info_message', { room: $scope.room, msg: '' });},1500); 
}

}]);

html

    *<form ng-submit="submit()">
        {{info}}  
        <br>
        <input autocomplete="off" ng-model="insertedText" ng-change="isUserTyping()" type="text" />
            <button type="button" ng-click="submit()">
                Send
            </button>
        </form>*

最佳答案

你使用的是lambda表达式函数,这种语法是ECMA6语法,任何类型的IE都不支持....

你应该改用函数表达式:

  var runTwoFunctionWithSleepBetweenThem=function(foo1, foo2, time) {
   $q.when(foo1()).then(function() {
     $timeout(foo2, time);
   });
  }

关于javascript - angular 的错误消息 "Failed to instantiate module"仅在资源管理器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38283659/

相关文章:

javascript - 访问位于代码后面的变量时的 ASP.NET 编译错误

javascript - Chrome 扩展内容脚本 - .click() 不起作用

javascript - req.body 不适用于快速路由器发布请求

javascript - Angular 中的 Kendo 多日历

javascript - Javascript 执行何时停止?

javascript - 停止插入符号跳到文本区域的底部?

javascript - 用于动态改变高度的 AngularJS Masonry

javascript - 将范围值保存到另一个范围并同时显示

angularjs - UI Bootstrap datepicker 说 ISO-8601 日期字符串的日期无效

javascript - 如何在不从 firebase 重新加载页面的情况下更新数据