我在Gallery
组件语言代码:
function Gallery(LanguageService) {
var $ctrl = this;
$ctrl.$onInit = function() {
$ctrl.code = LanguageService.language;
_loadGallery($ctrl.code);
}
}
LanguageService
是服务,它包含了全球性的语言设置。例如,对于英语,代码可以是en
,对于波兰语可以是pl
。从Gallery
我可以移动到Image details
组件,其中$onInit
看起来相同 - 从语言和加载数据中获取代码。问题是我可以添加图像翻译,例如德语翻译 - de
,它将改变LanguageService
。然后:
- 在
Image
我有德语版本 - 我可以点击
Go back
按钮返回到图库 - 但
Gallery
没有德文译本,我会得到404 Not Found
乍一看,我可以通过Image
状态galleryLanguage
:
$state.go("image.details", {id: image.id, galleryLanguage: $ctrl.language});
但它在每一个image
状态,如果从image.details
我想去image.edit
没有明确的定义,失去了,比如我要做的:
$state.go("image.edit", {id: image.id, galleryLanguage: $ctrl.language});
// And if I want to bo back to gallery
function goBackToGallery() {
$state.go(`gallery.details`, {galleryLanguage: $ctrl.galleryLanguage}); //and then in Gallery use it if present
}
当然它可以与附加的服务来完成:
function Gallery(LanguageService, TemporaryService) {
var $ctrl = this;
$ctrl.$onInit = function() {
$ctrl.code = TemporaryService.language? TemporaryService.language : LanguageService.language;
TemporaryService.language = undefined;
_loadGallery($ctrl.code);
}
function goToImageDetails(image) {
TemporaryService.language = String($ctrl.code);
$state.go('image.details', {id: image.id});
}
}
但也许它可以用Angular UI路由器完成,没有自己的实现?提前感谢您的帮助。
创建将存储当前的语言抽象父状态。 –
@PetrAveryanov听起来很有趣,但我能够更新它吗?我可以从'gallery.details'状态改变语言(在画廊的不同翻译之间切换) –