2016-07-09 8 views
1

Ich versuche, eine Chat-Anwendung mit eckigen am Frontend zu erstellen.Winkels Fehlermeldung "Fehler beim Instanziieren des Moduls" nur im Explorer

Ich habe eine neue Funktion namens isUserTyping zum Controler des Chats hinzugefügt und in Chrome getestet. es hat gut funktioniert.

im Explorer aber die Seite lädt nicht mit dieser Funktion (sobald ich es entfernen funktioniert es gut). Ther Fehler, den ich in der consoelo bekommen, ist dies:

„SCRIPT5022: [$ Injektor: modulerr] Nicht bestandene Modul mymodule aufgrund instanziiert: Fehler: [$ Injektor: nomod] Module 'mymodule' ist nicht verfügbar! Sie haben entweder den Modulnamen falsch geschrieben oder vergessen, ihn zu laden. Wenn Sie ein Modul registrieren, stellen Sie sicher, dass Sie die Abhängigkeiten als zweites Argument angeben. "

Ich weiß nicht, was dieser Fehler bedeutet .... Ich habe unten den Code, den ich habe.

Wenn jemand eine Idee hat, was dies im Explorer verursacht, werde ich es sehr schätzen.

Skript 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>* 
+0

Welche Version von IE? –

Antwort

3

Sie Lambda-Ausdruck-Funktion verwenden, diese Syntax ist ECMA6 Syntax, die nicht bei jeder Art von IE unterstützt wird ....

sollten Sie stattdessen Funktion Ausdruck verwenden:

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

danke .. hätte wissen müssen, dass es in IE ein Problem geben wird. auch schrieb ich Ihre Methode und jetzt bekomme ich: ** Typeerror: Konnte nicht Eigentum erhalten ‚dann‘ undefinierter oder NULL-Verweis ** können Sie mir auch in helfen Understaning warum das passiert? danke – Matoy

+1

Hallo, vielleicht kleiner Tippfehler bei Codebeispiel, behoben, versuche es nochmal ... –

+0

danke .. es hat geklappt. Ich bin immer noch neu in der Versprechen/$ q.when() ... Syntax. – Matoy

Verwandte Themen