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

上記のコードには解決方法が含まれています。以下に示すように、私は、アレイ内の記事を注入しようとしたコントローラに注入されていない解決関数[Angular JS]

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

は、それがエラーを出しますが、私の知る限りでは、それは解決機能を注入するための正しい方法です:

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

私の記事が解決には、機能が注入されていません。私は、記事の依存関係が動作するかどうかをテストするために示されているように文字列(例: 'boo')を返そうとしましたが、それはundefinedを返しません。理由は何でしょうか?

+0

あなたは小型化していますか?もしそうなら、あなたの解決関数を '[arcticleService、$ q、function(articleService、$ q){]にラップする必要があります。 。 。 }] ' –

+0

私は前にミスタイプしました。縮小する場合は、 '['arcticleService'、 '$ q'、function(articleService、$ q){のようにあなたの解決関数をラップしてください。 。 。 }] ' –

+0

解決関数をもう一度書くことはできますか?私はそれを包み込むことについてちょっと混乱しています^ – foxtrot3009

答えて

1

ここに解決メッセージを示すためのPlunkerがあります。この例では、投稿したコードと同じ構造であり、正常に動作するはずです。

約ページをクリックすると、解決メッセージが表示されます。

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

コード:

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

それはあなたが使用している角度のバージョンまたはあなたのコードを縮小化している問題がある可能性があります。

+0

はい私は最新バージョンを使用しています。 '['$ scope'、 'resolveMessage'、' ..私は注入エラーを取得します。 – foxtrot3009

関連する問題