我需要一种方法来入侵$stateProvider
。这就是原因:
angular.module('rects', []).config(($stateProvider)=> {
$stateProvider.state({
name: 'rectangles',
templateUrl: 'list.html',
controller: 'listController',
data: {
foo: 'rectangles foo'
}
})
})
angular.module('circles', []).config(($stateProvider)=> {
$stateProvider.state({
name: 'circles',
templateUrl: 'list.html',
controller: 'listController',
data: {
foo: 'circles foo'
}
})
})
现在foo
出现在$state.current.data
的控制器中,这很好。但是现在我需要为矩形调整data
,我必须使用另一个服务或工厂来处理数据,我不能在config
部分注入另一个服务,我不能使用resolve
来抛出额外的进入控制器的东西,因为那时我会遇到依赖性问题,或者我必须在resolve
中使用的每个状态中使用listController
。但也许我可以这样做:
angular.module('rects', []).config(($stateProvider)=> {
$stateProvider.state({
...
...
resolve: {
$state: function(myFookingService) {
this.data.foo = myFookingService.fookDatTing('rectangles foo');
return this;
}
}
})
})
但当然这不起作用。我仍然认为这是可能的,但我无法正确使用语法。
更新:有点找到了方法:
angular.module('rects', []).config(($stateProvider)=> {
$stateProvider.state({
name: 'rectangles'
...
...
controllerProvider:($state, myFookingService)=> {
$state.get('rectangles').data.foo = myFookingService.fookDatTing('rectangles foo');
return 'listController'
}
})
})
问题:这种方法有多危险?那可能会在以后咬我屁股吗?