2016-09-05 3 views
0

Ich versuche progressBar von AngularUIBootstrap zu verwenden.

Ich habe eine objectFactory.js Datei:

(function() { 
    var objectiveFactory = function ($http, animate) { 
     debugger; 
     return { 
      getObjectives: function() {     
       return $http.get('/api/Objective/'); 
      } 
     }; 

    }; 
    debugger; 
    try { 
     //objectiveFactory.$inject = ['$http', '$animate', '$sanitize'];// error 
     objectiveFactory.$inject = ['$http', '$animate'];// no error 
     angular.module('app', []).factory('objectiveFactory', objectiveFactory); 
    } 
    catch (e) 
    {}  
}()); 

Es ist wirklich seltsam ist, aber wenn ich neue Abhängigkeit hinzufügen $sanitize:

objectiveFactory.$inject = ['$http', '$animate', '$sanitize'];// not working 

Dann habe ich einen Fehler bekam:

angular.js:13920 Error: [$injector:unpr] http://errors.angularjs.org/1.5.8/ $injector/unpr?p0=sanitizeProvider%20%3C-%20sanitize%20%3C-%20objectiveController at Error (native) at http://localhost:15533/Scripts/angular.min.js:6:412 at http://localhost:15533/Scripts/angular.min.js:43:174 at Object.d [as get]

Aber '$http' und '$animate', Injektionen funktioniert perfekt.

Ich habe eine Menge Infos erforscht und geprüft doppelt folgende Hinweise in meiner Web-API-Anwendung:

  1. I Versionen angular'js Datei und angular-sanitize.js überprüft haben, und sie sind die gleichen 1.5.8.

  2. Meine Bundle-Dateien wie folgt aussehen:

    bundles.Add(new ScriptBundle("~/bundles/angularjs").Include(
          "~/Scripts/jquery-1.10.2.min.js", 
          "~/Scripts/bootstrap.min.js", 
          "~/Scripts/angular.min.js",      
          "~/Scripts/angular-animate.min.js", 
          "~/Scripts/angular-sanitize.min.js", 
          "~/Scripts/ui-bootstrap-tpls-2.1.3.js", 
          "~/Scripts/objectiveFactory.js", 
          "~/Scripts/objective.js" 
    
          )); 
    
  3. ich verschiedene Möglichkeiten der Injektion versucht haben:

    objectiveController.$inject = ['$scope', '$http', 'objectiveFactory', '$animate', 'ngSanitize']; 
    objectiveController.$inject = ['$scope', '$http', 'objectiveFactory', '$animate', '$sanitize']; 
    objectiveController.$inject = ['$scope', '$http', 'objectiveFactory', '$animate', 'sanitize']; 
    

jedoch der Fehler gleich ist:

angular.js:13920 Error: [$injector:unpr] Unknown provider:

Hat jemand kn Was habe ich falsch gemacht? ('$http' Injektion funktioniert perfekt)

+1

hast du ngSanitize in dein Hauptmodul injiziert? –

+0

@PoyrazYilmaz ooops, was ist das Hauptmodul? Ich habe nur zwei JavaScript-Dateien: 'objectoveFactory' und' objectiveController'. – StepUp

+2

angular.module ('app', []) hier ist dein Hauptmodul und du hast hier nichts injiziert. Es ist normal, dass $ https funktioniert, weil es mit Core kommt, aber Sie müssen ngSanitize injizieren, um $ die Arbeit zu sanieren ... –

Antwort

1

Inject ngSanitize in Ihr Hauptmodul arbeiten mit $ sanieren ...

Sie müssen auch gleiche tun für $ animieren, injizieren ngAnimate

+0

Kann er nicht in den Controller injiziert werden? Wenn er mehrere Controller hätte, wäre das nicht modularer? – Mawg

+1

@Mawg ngSanitize ist ein angularjs-Modul, so dass Sie es nicht Controller injizieren können, aber Sie können es in Ihr Modul injizieren. Wenn Sie es nur in Untermodulen verwenden möchten, dann injizieren Sie es nur in Untermodule. –

+0

Ich war mir dessen nicht bewusst! Und ich habe nur gefragt, weil ich dies gefunden habe, während ich nach einem Problem gesucht habe, das ich beim Versuch habe, direkt in den Controller zu injizieren. Also, plus eins zu dir und jetzt bin ich auf der Suche nach einem Tutorial :-) – Mawg

Verwandte Themen