2017-03-22 36 views
0

我正在從UI-Router v0.4.x遷移到v1.0,並且遇到問題。考慮下面的一段代碼。AngularJS UI-Router v1.0:在解析期間獲取狀態名稱

myApp 
    .component('myComponent', { 
     bindings: { 
      resolveBinding: '<' 
     }, 
     controller: class myComponentController { 
      constructor() { 
       // ... 
      } 
     }, 
     templateUrl: someTemplateUrl 
    }) 
    .config(($stateProvider) => { 
     $stateProvider 
      .state('some-state', { 
       url: '/some-state', 
       component: 'myComponent', 
       resolve: { 
        resolveBinding: function(DependencyResolver) { 
         let targetStateName = this.self.name 
         return DependencyResolver.doSomeThingsFor(targetStateName) 
        } 
       } 
      }) 
    }) 

在新版本中let targetStateName = this.self.name會失敗,因爲this現在null,而在此之前它包含在它過渡到狀態信息。

如何在這段代碼中獲得州名?

我想使用一個$transitions.onBefore鉤把名字rootScope,並做類似:

resolveBinding: function($rootScope, DependencyResolver) { 
    let targetStateName = $rootScope.hackyStateName 
    return DependencyResolver.doSomeThingsFor(targetStateName) 
} 

但我覺得這是醜陋的,我錯過了什麼更簡單,更優雅。

回答

2

你可以注入$transition$爲解決功能:

resolveBinding: function($transition$) { 
    console.log($transition$.to()); 
} 

$transition$ documentation

這對你有幫助嗎?

+0

正是我在尋找的東西。感謝您指出這一點! –

相關問題