簡體   English   中英

ui-router-將promise結果傳遞給嵌套的解析

[英]ui-router - passing promise result to nested resolve

我有這樣的嵌套解析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;
             }
         }
     })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM