【发布时间】:2017-06-01 15:52:53
【问题描述】:
我有一个 ui.router 状态,我需要在其中解析一些数据,但它似乎在加载控制器和加载模板之前解决。
状态定义如下:
$stateProvider
.state( 'route', {
url: '/update/:id',
template: '<update order="$resolve.order"></update>',
resolve: {
order: function( OrdersService, $stateParams ) {
return OrdersService.get( $stateParams.id ).$promise
}
}
} )
组件:
const Update = {
bindings: {
order: "<"
},
controller,
template
};
angular.module( 'app' )
.component( 'update', Update );
控制器:
export default class UpdateCtrl {
constructor(){
...
console.log(this.order);
...
}
}
订单服务:
class OrdersService {
constructor( $resource, api_name ) {
this.$resource = $resource( api_name + '/orders/:id', { id: '@id' }, {
get: { method: 'GET' }
} );
}
get( orderId ) {
return this.$resource.get( { orderId } );
}
}
angular.module( 'app' )
.factory( 'OrdersService', [
'$resource',
'api_name',
( $resource, api_name ) => new OrdersService( $resource, api_name )
] );
所有导入都很好,我仍然从控制器获得关注,以及模板中的完整数据
console.log(this.order) // undefined
附:当我在控制器构造函数中调用 console.log(this.order,this) 时,我发现了一些奇怪的行为。
它打印到控制台
undefined OrderUpdateCtrl
$stateParams:Object
OrdersService:OrdersService
order:Resource // full resolved object
__proto__:Object
【问题讨论】:
-
能否提供
OrdersService.get和控制器的实现?
标签: javascript angularjs angular-ui-router components