[英]Angular 1/Ui-router - Pass data from resolve to controller
我想通過解析將數據( contactName
)從狀態傳遞到控制器:
.state({
name: 'contact.detail.overlay',
abstract: true,
component: 'overlayContent',
resolve: {
contactName: (originalContact, $rootScope, ContactService) => {
$rootScope.contactName = ContactService.getContactName(originalContact)
return $rootScope.contactName
}
}
})
在我的狀態下,一切都是正確的, contactName
也是正確的,但是在我的overlayContent
控制器中無法訪問它,您是否有解決方案來在控制器中具有$rootScope.contactName
訪問權限?
編輯:控制器:
class overlayContentComponent {
constructor($state, $interpolate, $scope) {
'ngInject'
this.$scope = $scope
this.$state = $state
this.$interpolate = $interpolate
}
/**
*
* On initialization hook, let's check if an overlay title
* has been defined for the current state.
*/
$onInit() {
const stateData = this.$state.current.data || { title: '' }
this.overlayTitle = angular.isDefined(stateData.title) ? this.$interpolate(stateData.title)() : ''
}
}
export const overlayContentComponent = {
template: require('./overlay-content.html'),
controller: overlayContentComponent
}
我可以訪問contactName
在我的控制器通過this.$scope.$root.contactName
,但我想,以避免$scope.$root
的另一種選擇
更改您的構造函數:
constructor($state, $interpolate, $scope, contactName) {
'ngInject';
// The variable you want:
this.contactName = contactName;
this.$scope = $scope
this.$state = $state
this.$interpolate = $interpolate
}
現在應將“ contactName”解析注入該狀態(解析所駐留的位置)的控制器中。 如上所述,這應該允許您在控制器中訪問它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.