Javascript ui路由器-将承诺结果传递给嵌套解析

Javascript ui路由器-将承诺结果传递给嵌套解析,javascript,angularjs,json,angular-ui-router,Javascript,Angularjs,Json,Angular Ui Router,我有一个具有嵌套解析的ui路由器,如下所示: $stateProvider .state('route', { url: '/route', templateUrl: 'mypage.aspx', resolve: { getjson: function (readJson,$http) { var readjsong

我有一个具有嵌套解析的ui路由器,如下所示:

    $stateProvider
         .state('route', {
             url: '/route',
             templateUrl: 'mypage.aspx',
             resolve: {
                 getjson: function (readJson,$http) {
                     var readjsonget = $http.get('files.json');
                     readjsonget.then(function (result) {
                         return result.data;                             
                     }, function (ex) {
                         console.log('GET error', ex);
                     });                         
                 },
                 load: function ($q, filesInject, getjson) {
                     files = getjson;
                     $log.info(2);
                     return $q.all(files.map(filesInject.inject));
                 }
             }
         })
我读取了一个json,希望将内容传递给第二个resolve函数

我已经尝试了很多方法,但总是在第二次功能后触发成功承诺


如何解决这个问题?

在promise readjsonget中添加一个返回

$stateProvider
     .state('route', {
         url: '/route',
         templateUrl: 'mypage.aspx',
         resolve: {
             getjson: function (readJson, $http) {
                 var readjsonget = $http.get('files.json');
                 return readjsonget.then(function (result) {
                     return result.data;                             
                 }, function (ex) {
                     console.log('GET error', ex);
                 });                         
             },
             load: function ($q, filesInject, getjson) {
                 files = getjson;
                 $log.info(2);
                 return $q.all(files.map(filesInject.inject));
             }
         }
     })

像这样的怎么样:

   $stateProvider
     .state('route', {
         url: '/route',
         templateUrl: 'mypage.aspx',
         resolve: {
             getjson: function (readJson,$http) {
                 var deferred = $q.defer();
                 var readjsonget = $http.get('files.json');
                 readjsonget.then(function (result) {
                     deferred.resolve(result);          
                 }, function (ex) {
                     deferred.reject(ex);
                 });          
                 return deferred.promise;               
             },
             load: function ($q, filesInject, getjson) {
                 var deferred = $q.defer();
                 files = getjson;
                 $log.info(2);
                 files.then(function(data){
                     deferred.resolve(data.map(mapFunction));
                 }, function(error){
                     deferred.reject(error);
                 });
                 return deferred.promise;
             }
         }
     })

例如:将此移动到服务