2017-03-20 27 views
1

如何从服务中获取状态参数? 我有这样的状态:如何从angularjs中的解析数据获取ui-router状态参数

.state('cashbox.list', { 
     title: 'Cashbox', 
     url: '/:from/:to?q', 
     templateUrl: '/cashbox_list.html', 
     controllerUrl: 'controllers/CashboxCtrl.js', 
     controller: 'CashboxCtrl', 
     controllerAs: 'mainCtrl', 
     params: { 
      from: getCashboxParamFrom, 
      to: getCashboxParamTo 
     }, 
     resolve: { 
      cashboxData: getTransactionsData 
     } 
    }) 



    function getTransactionsData($stateParams) 
    { 
     return CashboxService.getTransactions($stateParams.from, $stateParams.to); 
    } 

现在我的问题是,PARAMS 是动态的,被其他服务被取。在决定获得参数之前,我需要一些解决方案。我已经尝试使用getCashboxParamTo/From中的承诺进行操作,但应用程序会在进入状态时停止路由。还尝试将父状态与redirectTo一起使用到子状态,但未找到有关如何从父状态中的已解决数据动态创建状态列的任何内容。因为我遇到一个问题“的转变由不同的过渡已被取代”与state.go

 .state('cashbox', { 
      title: trns('title.cashbox_list'), 
      url: '/cashbox', 
      redirectTo: { 
       state: 'cashbox.list', 
       params: HERE DATES FROM RESOLVE 
      }, 
      resolve: { 
       dates: getFromToDates 
      } 
     }) 

解决方案将无法正常工作。

+0

你怎么样创建两个左轮手枪,并作出一个依赖于另一个。所以,第二个将等到第一个完成,那就是在第二个解析器中调用服务之前获得参数的方法。 – mbeso

+0

我需要此重定向,因为深层链接需要产生的URL。嵌套的解析将为状态提供正确的数据,但浏览器地址应显示基本参数。 – HarpoMarx69

回答

0

答案是声明两个状态钱箱cashbox.list。然后,在在onStart过渡钩重定向从服务中获取数据后:

$transitions.onStart({to: 'cashbox'}, function (trans) 
    { 
     var curMonth = gfService.getCurrentMonth(); 
     return $state.target('cashbox.list', {from: curMonth.dateFrom.string, to: curMonth.dateTo.string}) 
    }); 
相关问题