2016-03-29 5 views
0
angular 
    .module('madkoffeeFrontendApp', []) 
    .config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
     .when('/', { 
     templateUrl: 'views/articles.html', 
     controller: 'MainCtrl', 
     resolve: { 
      articles: function(articleService,$q) { 
      // return articleService.getArticles(); 
      return 'boo'; 
      } 
     } 
     }) 
     .otherwise({ 
     redirectTo: '/' 
     }); 

    $locationProvider.html5Mode(true); 
    }); 

Mein vorstehender Code enthält die Auflösung.Auflösungsfunktion wird nicht in den Controller injiziert. [Angular JS]

angular.module('madkoffeeFrontendApp') 
    .controller('MainCtrl', ['$scope', 
    function($scope, articles) { 
     console.log(articles); 
    }]); 

Als ich versuchte, Artikel in der Anordnung zu injizieren, wie unten gezeigt, gibt es einen Fehler, aber soweit ich weiß, das ist der richtige Weg, um eine Entschlossenheit Funktion zu injizieren:

angular.module('madkoffeeFrontendApp') 
    .controller('MainCtrl', ['$scope','articles', 
    function($scope, articles) { 
     console.log(articles); 
    }]); 

Meine Artikel lösen Funktion wird nicht injiziert. Ich habe versucht, nur eine Zeichenkette (Beispiel: "boo") wie gezeigt zurückzugeben, um zu testen, ob die Artikelabhängigkeit funktioniert oder nicht, und sie gibt es nicht undefiniert zurück. Was könnte der Grund sein?

+0

Verkleinern Sie? Wenn dies der Fall ist, müssen Sie Ihre Auflösungsfunktion in '[arcticleService, $ q, function (articleService, $ q) {{} umbrechen. . . }] ' –

+0

Ich habe mich früher vertippt. Wenn Sie die Funktion verkleinern, umschließen Sie Ihre Auflösungsfunktion wie folgt: '[' arcticleService ',' $ q ', function (articleService, $ q) {. . . }] ' –

+0

Können Sie die Auflösungsfunktion erneut schreiben? Ich bin ein wenig verwirrt darüber, es so zu wickeln^ – foxtrot3009

Antwort

1

Hier ist ein Plunker, um die Auflösungsnachricht zu demonstrieren. Wie Sie im Beispiel sehen werden, ist es dieselbe Struktur wie der von Ihnen gepostete Code und sollte gut funktionieren.

Klicken Sie auf die About-Seite, um die Auflösungsmeldung anzuzeigen.

http://plnkr.co/edit/FomhxYIra5GI7nm1KpGb?p=preview

Code:

var resolveTestApp = angular.module('resolveTestApp', ['ngRoute']); 

    resolveTestApp.config(function($routeProvider) { 
    $routeProvider 

     .when('/', { 
      templateUrl : 'pages/home.html', 
      controller : 'mainController' 
     }) 

     .when('/about', { 
      templateUrl : 'pages/about.html', 
      controller : 'aboutController', 
      resolve: { 
       resolveMessage: function() { 
       return 'This is the resolve message'; 
       } 
      } 
     }) 

}); 

resolveTestApp.controller('mainController', function($scope) { 
    $scope.message = 'Everyone come and see how good I look!'; 
}); 

resolveTestApp.controller('aboutController', ['$scope', 'resolveMessage', function($scope, resolveMessage) { 
    $scope.message = resolveMessage; 
}] 
); 

Es kann die Version von Angular sein Sie verwenden oder ein Problem, wenn Sie Ihren Code sind minifying.

+0

Ja, ich benutze die neueste Version. Versuchte den Code, wenn ich folgendes versuche: '[$ scope ',' resolveMessage ',' .. Ich erhalte einen Fehler bei der Eingabe. – foxtrot3009