2016-10-19 3 views
1

Ich habe den folgenden Code: titledbApp.controller('TitleListController', ['$cookieStore', function($scope, $http, $cookieStore) {AngularJS - Regler Funktion Order - Einige Referenzen nicht funktionieren

Es nicht Arbeit - es grundsätzlich verkantet $ CookieStor erkennen und sagen, es undefined sind so alle .get und .put Anfragen Scheitern.

Wenn ich mich bewege $cookieStore in function() zu Beginn (vor $scope) es funktioniert gut, aber dann $scope und $http nicht funktionieren.

Voll Code:

titledbApp.controller('TitleListController', ['$cookieStore', function($cookieStore, $scope, $http) { 
    $cookieStore.put('ETag', 'test'); 
    var etag = 't'; 
    $http.get('https://api.github.com/users/ImReallyShiny/repos', {headers: {'If-None-Match': 't'}}).then(function successCallback(response, headers) { 
     $cookieStore.put('ETag', headers('ETag')); 
     $scope.titles = response.data; 
     $scope.titles.splice(1, 1); 
     $scope.titles.sort(function(a, b){ 
      if(a.name.toUpperCase() < b.name.toUpperCase()) return -1; 
      if(a.name.toUpperCase() > b.name.toUpperCase()) return 1; 
      return 0; 
     }); 
     }), function errorCallback() { 
     return "Error"; 
     }; 
}]); 
+0

sollte [ '$ cookieStore', '$ scope', '$ http', function ($ cookieStore, $ scope, $ http), Reihenfolge sollte überhaupt keine Rolle spielen, solange Sie sie eins zu eins halten. – Mahesh

+0

Ich bin nicht 100%, aber vor Funktion, wo Sie '$ cookieStore' haben, müssen Sie nicht $ scope und $ http in der gleichen Weise injizieren? – user1289451

+0

Danke, dass jeder es perfekt gelöst hat :) – user6846750

Antwort

1
titledbApp.controller('TitleListController', ['$cookieStore', function($cookieStore, $scope, $http) 

Sollte

titledbApp.controller('TitleListController', ['$cookieStore', '$scope', '$http', function($cookieStore, $scope, $http) 

Sie haben sie alle injizieren, bevor Sie sie in Ihrem Code zugreifen können.

+1

Dokumentation ist [hier] (https://docs.angularjs.org/guide/di). Suchen Sie nach "Inline Array Annotation" –

+0

Mein schlechtes! Entschuldigung, ich bin sehr neu bei AngularJS - Ich schätze es, dass Sie tatsächlich helfen, anstatt nur zu downvooten und zu ignorieren :) Ich akzeptiere in 6 Minuten. – user6846750

+0

Und danke, dass du Zeit und Gedanken in eine gut formatierte Frage gebracht hast. Die meisten Menschen hier in der Gegend sind sehr hilfreich, vorausgesetzt, dass Sie sich etwas Mühe geben, egal wie "albern" die Frage ist. – user1289451

0

Gemäß angular js offizielle Dokumentation, die Reihenfolge und die Nr .: der Parameter der Abhängigkeiten sollten gleich sein.

titledbApp.controller('TitleListController', ['$cookieStore','$scope', '$http', function($cookieStore, $scope, $http) { 
    $cookieStore.put('ETag', 'test'); 
    var etag = 't'; 
    $http.get('https://api.github.com/users/ImReallyShiny/repos', {headers: {'If-None-Match': 't'}}).then(function successCallback(response, headers) { 
      $cookieStore.put('ETag', headers('ETag')); 
     $scope.titles = response.data; 
     $scope.titles.splice(1, 1); 
     $scope.titles.sort(function(a, b){ 
      if(a.name.toUpperCase() < b.name.toUpperCase()) return -1; 
      if(a.name.toUpperCase() > b.name.toUpperCase()) return 1; 
      return 0; 
     }); 
     }), function errorCallback() { 
     return "Error"; 
     }; 
}]); 

Sie können auch die Funktion Syntax verwenden,

titledbApp.controller('TitleListController', TitleListController); 

function TitleListController($cookieStore,$scope, $http){ 
    $cookieStore.put('ETag', 'test'); 
    var etag = 't'; 
    $http.get('https://api.github.com/users/ImReallyShiny/repos', {headers: {'If-None-Match': 't'}}).then(function successCallback(response, headers) { 
      $cookieStore.put('ETag', headers('ETag')); 
     $scope.titles = response.data; 
     $scope.titles.splice(1, 1); 
     $scope.titles.sort(function(a, b){ 
      if(a.name.toUpperCase() < b.name.toUpperCase()) return -1; 
      if(a.name.toUpperCase() > b.name.toUpperCase()) return 1; 
      return 0; 
     }); 
     }), function errorCallback() { 
     return "Error"; 
     }; 

} 
Verwandte Themen