2017-03-22 15 views
0

UI-Router v0.4.xからv1.0に移行していますが、問題が発生しています。次のコードを考えてみましょう。 thisは今nullあるので、それはそれはに移行された状態に関する情報が含まれて前のに対し、新バージョンlet targetStateName = this.self.nameAngularJS 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) 
        } 
       } 
      }) 
    }) 

は、失敗します。

このコードブロックで州名を取得するにはどうすればよいですか?

私のようなものrootScopeに名前を入れて$transitions.onBeforeフックを使用して、とやって考えていた:

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

をしかし、私は、これは醜いと感じ、私は簡単に、よりエレガントな何かを逃しています。

答えて

2

あなたは解決関数に$transition$を注入することができます

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

$transition$ documentationを参照してください。

これは役立ちますか?

+0

私が探していたものとまったく同じです。これを指摘してくれてありがとう! –

関連する問題