1
그래서 나는 다음과 같이 설정 몇 가지 상태가 있습니다각도-UI-라우터 공유 상태
$stateProvider.state('accounts', {
url: "/accounts",
templateUrl: 'tpl/accounts/index.html',
}).state('accounts.view', {
url: "/{accountNumber:[A-Z]{3}[0-9]{3,7}}",
views: {
'@': {
templateUrl: 'tpl/accounts/view.html',
controller: 'AccountController',
controllerAs: 'controller'
}
},
resolve: {
account: ['$stateParams', 'AccountService', function ($stateParams, accountService) {
return accountService.get($stateParams.accountNumber);
}]
}
}).state('accounts.create', {
url: '/create',
views: {
'@': {
templateUrl: 'tpl/accounts/save.html',
controller: 'AccountSaveController',
controllerAs: 'controller'
}
},
params: {
account: null
},
resolve: {
account: ['$stateParams', 'AccountProvider', function ($stateParams, provider) {
return $stateParams.account || provider.newAccount();
}]
}
}).state('accounts.view.edit', {
url: '/edit',
views: {
'@': {
templateUrl: 'tpl/accounts/save.html',
controller: 'AccountSaveController',
controllerAs: 'controller'
}
}
})
을하고 모두 잘 작동합니다. 이제는 에 대한 자식 상태를 만들고 및 을 편집으로 만들 필요가 있습니다. 그들은 같은 뷰와 컨트롤러를 사용할 것이지만 동일한 상태를 사용할 수 있는지 궁금합니다. 예를 들어 , 내가 이런 걸 볼 것이다 주소 상태를 설정됩니다
.state('accounts.view.edit.address', {
url: '/address',
views: {
'@': {
templateUrl: 'tpl/accounts/save/address.html',
controller: 'AccountAddressSaveController',
controllerAs: 'controller'
}
}
})
을하고 난 또 다른까지이 같은 상태를 만들 설정합니다 :
.state('accounts.create.address', {
url: '/address',
views: {
'@': {
templateUrl: 'tpl/accounts/save/address.html',
controller: 'AccountAddressSaveController',
controllerAs: 'controller'
}
}
})
그것은 외설 한 자녀 상태에서이 일을하는 데 문제가되지는 않지만 다른 네 가지가 있습니다. 아마도 저는 주를 공유 할 수있는 방법이 있는지 묻습니다.
.state(['accounts.create.address','accounts.view.edit.address'], {
url: '/address',
views: {
'@': {
templateUrl: 'tpl/accounts/save/address.html',
controller: 'AccountAddressSaveController',
controllerAs: 'controller'
}
}
})
내가'angular.extend ({}, SharedState입니다)를 사용하여 각각에 대해 얕은 복사본을 만드는 것, 변수 다음
간단하게 할 당신의 국가 설정을 넣을 수 있습니다 또는'Object.assign ({}, sharedState)' –