我正在构建一个多语言应用程序,我想知道是否可以动态设置角度路径路径,即。这样我就可以将slug从英语翻到西班牙语(/#/login
变为/#/iniciar
)。
我正在使用angular-translate和require.js延迟加载,因此我的翻译字符串在应用程序启动后加载。因此,我需要能够在应用程序启动后更改路由。
是否可以使用angular-route
,或者甚至使用angular-ui的ui-router
代替......?
类似的东西:
app.config(function ($routeProvider, SomeLanguageService) {
var pathSlugs = SomeLanguageService.getRouteSlugs('ES');
$routeProvider
.when('/' + pathSlugs.home , {
templateUrl: '/home/home.html',
controller: ''
});
});
答案 0 :(得分:2)
此处显示UI-Router
包含工作人员的方式:AngularJS - UI-router - How to configure dynamic views
诀窍是,在配置阶段保留对提供商配置的引用,稍后在运行阶段
中使用它var $stateProviderRef;
app.config(['$stateProviderRef',
function ($stateProviderRef)
{
$stateProviderRef = $stateProvider; // this configuration API
}])
现在即使在运行中,我们仍然可以访问该提供程序配置API,以定义状态
app.run([ SomeLanguageService
function (SomeLanguageService)
{
var pathSlugs = SomeLanguageService.getRouteSlugs('ES');
// define state as needed
var state = {
"url": '/' + pathSlugs.home + ...,
"parent" : ...,
"abstract": ...
"views": {}
};
// inject that in to the configuration
$stateProviderRef.state(value.name, state);
...