2015-05-02 11 views
5

Ich versuche, eine WebAPI von AngularJS aufzurufen. Es ist eine einfache GET-Anfrage, und ich habe CORS auf dem Server aktiviert.AngularJS Injektor Problem

Ich bekomme die $ Injektor: unpr Unbekannter Anbieter Fehler.

Ich habe ein Winkelmodul raterModule.js genannt:

var raterModule = angular.module('rater', []); 

ein Dienst namens corsService.js, der die Schnipsel aus enable-cors.org verwendet:

raterModule.factory("corsService", 
function createCORSRequest(method, url) { 
    var xhr = new XMLHttpRequest(); 
    // Check if the XMLHttpRequest object has a "withCredentials" property. 
    // "withCredentials" only exists on XMLHTTPRequest2 objects. 
    if ("withCredentials" in xhr) { 
     xhr.withCredentials = true; 
     xhr.open(method, url, true); 
    } 
    // Otherwise, check if XDomainRequest. XDomainRequest only exists in IE, and is IE's way of making CORS requests. 
    else if (typeof XDomainRequest != "undefined") {    
     xhr = new XDomainRequest(); 
     xhr.open(method, url); 
    } 
    // Otherwise, CORS is not supported by the browser. 
    else {    
     xhr = null; 
    } 
    return xhr; 
} 

)

und schließlich ein Controller namens menuController.js:

raterModule.controller("menuCtrl",["$scope","$http","corsService", 
    function menuCtrl($scope, $http, corsService) { 
     var xhr = corsService.createCORSRequest('GET', 'http://localhost:50942/api/menu/items'); 
     if (!xhr) { 
      throw new Error('CORS not supported'); 
     } 
     // Getting menu items 
     $http.get(xhr) 
        .success(function (data, status, headers, config) { 
         $scope.menu = data; 
        }) 
        .error(function (data, status, headers, config) { 
         alert("error getting menu items"); 
        }); 
    } 
]); 

Diese sind alle am unteren Rand eines HTML-Index-Seite enthalten. Was ich hatte gehofft, wäre zu geschehen, dass corsService in MenuCtrl injiziert wird und dann MenuCtrl wird das raterModule hinzugefügt.

Die MenüCtrl würde CorsService verwenden, um eine Anforderung zu erstellen, die dann an die WebAPI gesendet wird, um das Richtlinienproblem derselben Herkunft zu vermeiden.

Ich bin sicher, es ist etwas einfaches, aber in meiner Ignoranz kann ich es nicht sehen.

+0

Können Sie Ihren HTML-Code und auch die vollständige Fehlermeldung einfügen? –

Antwort

2

Sie haben einen Fehler, weil Angular erwarten, dass Sie Anbieter method und url in Ihrem createCORSRequest injizieren, nicht Funktionsparameter.

So können Sie Ihre corsService in folgenden Weise bewertet:

raterModule.factory(`corsService`, function() { 
    var service = {}; 

    service.createCORSRequest = fucntion(method, url) { 
    // your logic here 
    }; 

    return service; 
}) 
+0

Danke, arbeite jetzt. – VenerableChris

Verwandte Themen