Разрешить данные не найдены в контроллере AngularJS

0

Предположим, у меня есть один маршрут:

angular.module('LiveAPP', ['ui.router',
                          'LiveAPP.main',
                          'LiveAPP.artist',
                          'liveAPP.signup',
                          'LiveAPP.factory',
                          'liveAPP.review'
                          ])

.config(function($urlRouterProvider, $stateProvider) {
$stateProvider.state("home", {
                url:"/",
                templateUrl : '/home.html',
                controller  : 'mainCtrl',
                resolve: {
                    artists: function () {
                      console.log('resolved')
                      return "I want this in controller"; 
                    }
                  }      
              })
})

Перед созданием моего mainCtrl я хочу, чтобы функция была привязана к исполнителям. Поэтому в моем контроллере у меня есть следующая настройка:

angular.module('LiveAPP.main',['LiveAPP.factory'])
.controller('mainCtrl', ['$rootScope','$scope','$http', '$location','dataFactory','artists', mainCtrl])

function mainCtrl($rootScope,$scope,$http,$location,dataFactory,artists){
  console.log(artists) //expect the return from resolve in ui.router
}    

Когда исполнители консольных журналов оцениваются как неопределенные. Кто-нибудь может понять, почему это так?

Теги:
angular-ui-router

1 ответ

0

Вы использовали ui-view? Если да, то у него не должно быть ng-контроллера для mainCtrl. Я сделал небольшие твики, и ваш код работает нормально

angular.module('LiveAPP', ['ui.router', 'LiveAPP.main'])

.config(function($urlRouterProvider, $stateProvider) {
  $stateProvider.state("home", {
    url:"/",
    templateUrl : 'home.html',
    controller  : 'mainCtrl',
    resolve: {
      artists: function () {
        console.log('resolved');
        return "I want this in controller";
      }
    }
  });
});

angular.module('LiveAPP.main',[])
  .controller('mainCtrl', ['$rootScope','$scope','$http', '$location', 'artists', mainCtrl]);

function mainCtrl($rootScope,$scope,$http,$location, artists){
  console.log(artists); //expect the return from resolve in ui.router
}  
<!DOCTYPE html>
<html lang="en" ng-app="LiveAPP">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div ui-view></div>

    <script type="text/ng-template" id="home.html">
    Lorem ipsum
  </script>

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
    <script src="http://rawgit.com/angular-ui/ui-router/0.2.15/release/angular-ui-router.js"></script>
    <script src="index.js" type="text/javascript"></script>
</body>
</html>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню