2016-03-29 21 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); 
    }); 

Yukarıdaki kodumda, özüm bulunur. aşağıda gösterildiği gibi ben dizideki makaleleri enjekte etmeye çalıştıDenetleyicide enjekte edilmeyen işlevi çözme [Açısal JS]

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

, bir hata veriyor ama bildiğim kadarıyla bu çözmek işlevini enjekte etmek doğru yolu şudur:

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

Yazılarım çözmek işlev enjekte edilmiyor. Makalenin bağımlılığının işe yarayıp yaramadığını test etmek için gösterildiği gibi sadece bir dizgeyi (örnek: 'boo') döndürmeyi denedim ve bu, undefined değil. Sebebi ne olabilir?

+0

Küçültüyor musunuz? Öyleyse çözüm işlevinizi '[arcticleService, $ q, function (articleService, $ q) {. . . }] ' –

+0

Daha önce yanlış yazdım. Küçültüyorsa, çözüm işlevinizi '['arcticleService', '$ q', işlev (articleService, $ q) {gibi yapın. . . }] ' –

+0

Çözüm işlevini tekrar yazabilir misiniz?^^ – foxtrot3009

cevap

1

Çözüm mesajını göstermek için bir Plunker işte burada. Örnekte göreceğiniz gibi, gönderdiğiniz kodla aynı yapıdır ve iyi çalışmalıdır.

Çözüm mesajını görmek için, ilgili sayfaya tıklayın.

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

Kod: Kodu küçültmek yaparken

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; 
}] 
); 

O kullandığınız açısal sürümünü veya bir sorun olabilir.

+0

Evet en son sürümü kullanıyorum. Bunu yapmaya çalıştığımda, kodunuzu denedim: '['$ scope', 'resolveMessage',' .. Bir enjeksiyon hatası alıyorum. – foxtrot3009