2015-07-01 2 views
0

Предположим, у меня есть один маршрут:Resolve данные не найдены в AngularJS контроллера

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 
}  

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

+0

ли вам посчастливилось иметь нг-контроллер на вашем HTML тоже? – Icycool

ответ

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>

Смежные вопросы