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

Мой вышеуказанный код содержит решение.Функция разрешения не вводится в контроллер [Угловой 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

Вот демон, чтобы продемонстрировать сообщение о разрешении. Как вы увидите в примере, это та же структура, что и код, который вы опубликовали, и должен работать нормально.

Нажмите на странице, чтобы увидеть сообщение с разрешением.

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