我正在从 UI-Router v0.4.x 迁移到 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
is now null
,而之前它包含有关它正在转换到的状态的信息。
如何在此代码块中获取州名称?
我正在考虑使用$transitions.onBefore
挂钩将名称放在 上rootScope
,并执行以下操作:
resolveBinding: function($rootScope, DependencyResolver) {
let targetStateName = $rootScope.hackyStateName
return DependencyResolver.doSomeThingsFor(targetStateName)
}
但我觉得这很难看,我错过了一些更简单、更优雅的东西。