2017-03-22 2 views
0

Ich migriere von UI-Router v0.4.x zu v1.0 und habe ein Problem. Betrachten Sie das folgende Stück Code.AngularJS UI-Router v1.0: Abrufen des Statusnamens während der Auflösung

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) 
        } 
       } 
      }) 
    }) 

In der neuen Version let targetStateName = this.self.name fehl, weil this jetzt null ist, während es vorher Informationen über den Zustand enthielt es wurde übergegangen wird.

Wie kann ich den Statusnamen in diesem Codeblock erhalten?

Ich dachte an einen $transitions.onBefore Haken mit dem Namen auf rootScope und etwas zu tun, wie gesagt:

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

Aber ich fühle, das ist hässlich und ich verpasste einfacher und eleganter auf etwas.

Antwort

2

Sie können $transition$ in eine Entschlossenheit Funktion injizieren:

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

die $transition$ documentation See.

Hilft Ihnen das?

+0

Genau das, was ich gesucht habe. Danke, dass du darauf hingewiesen hast! –

Verwandte Themen