ユーザーが「en」側の特定のページから「de」をクリックすると、「de」側のそのページに移動する言語スイッチャーを実装しようとしています。$state パラメータを console.dir すると、指定された $state の「現在の」プロパティで必要な値が公開されます。必要な値に焦点を当てるために $state.current を console.dir しようとすると、親の状態プロパティのみが表示されます (現在のビューはネストされています)。
私の現在の考えでは、私は url/en/content を使用しており、動的に言語ナビゲーションに適切な目的地ポイントをある種のデータ属性に動的にロードさせることができます。 「移動」して、angular-translateごとにpreferedLanguage値を設定します。
現時点での重要な問題は、その $state 名を公開することです。繰り返しますが、単純に $state を参照すると、現在のオブジェクトが必要な値を提供しますが、 $current.state は親の状態のみを直接提供します。
誰かがこれを行う方法についてより良い提案をしている場合 (角度のある方法で - カスタム Cookie ジャンクではありません)、喜んで提案を受け付けます。
ありがとう!
アップデート!コードサンプル:
私の状態のオブジェクト参照:
var urlStates = {
en: {
home: {
name: 'home',
url: '/en',
templateUrl: 'templates/'+lang+'/home.html',
abstract: 'true'
},
home_highlights: {
name:'home.highlights',
url: '',
templateUrl: 'templates/'+lang+'/home.highlights.html'
},
home_social:
{
name: 'home.social',
url: '/social',
templateUrl: 'templates/'+lang+'/home.social.html'
},
home_map:
{
name: 'home.map',
url: '/map',
templateUrl: 'templates/'+lang+'/home.map.html'
}
};
私の州:
$stateProvider
.state(urlStates.en.home)
.state(urlStates.en.home_highlights)
.state(urlStates.en.home_social)
.state(urlStates.en.home_map);
$locationProvider.html5Mode(true);
})
コントローラ:
.controller('LandingPage', function($translate, $state){
this.state = $state;
this.greeting = "Hello";
});
最後に、dom に表示される出力:
this.state = $state; で
{
"params": {},
"current": {
"name": "home.highlights",
"url": "",
"templateUrl": "templates/en/home.highlights.html" },
"transition": null
}
this.state = $state.current で
{
"name": "",
"url": "^",
"views": null,
"abstract": true
}