AngularJS UI-Router v1.0: 在解析期间获取状态名称
AngularJS UI-Router v1.0: getting state name during resolving
我正在从 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
现在是 null
,而在此之前它包含有关其正在转换到的状态的信息。
如何获取这段代码中的州名称?
我正在考虑使用 $transitions.onBefore
挂钩将名称放在 rootScope
上,然后做类似的事情:
resolveBinding: function($rootScope, DependencyResolver) {
let targetStateName = $rootScope.hackyStateName
return DependencyResolver.doSomeThingsFor(targetStateName)
}
但我觉得这很难看,我错过了一些更简单、更优雅的东西。
您可以将 $transition$
注入解析函数:
resolveBinding: function($transition$) {
console.log($transition$.to());
}
对你有帮助吗?
我正在从 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
现在是 null
,而在此之前它包含有关其正在转换到的状态的信息。
如何获取这段代码中的州名称?
我正在考虑使用 $transitions.onBefore
挂钩将名称放在 rootScope
上,然后做类似的事情:
resolveBinding: function($rootScope, DependencyResolver) {
let targetStateName = $rootScope.hackyStateName
return DependencyResolver.doSomeThingsFor(targetStateName)
}
但我觉得这很难看,我错过了一些更简单、更优雅的东西。
您可以将 $transition$
注入解析函数:
resolveBinding: function($transition$) {
console.log($transition$.to());
}
对你有帮助吗?