AngularJs。 私はこの現在のロケールでフィールドからモデルを選択する方法
animal: {name_en: "cat", name_de: "Kater", name_ru: "кот"}
ようなモデルは、だから私は、HTMLテンプレート適切なフィールドで使用する必要があります。 このようなもの:
<div>{{ if(locale == 'en') animal.name_en }}</div>
私はそうすることはできますか?
AngularJs。 私はこの現在のロケールでフィールドからモデルを選択する方法
animal: {name_en: "cat", name_de: "Kater", name_ru: "кот"}
ようなモデルは、だから私は、HTMLテンプレート適切なフィールドで使用する必要があります。 このようなもの:
<div>{{ if(locale == 'en') animal.name_en }}</div>
私はそうすることはできますか?
はい、AngularJSで簡単に行うことができます。あなたの構造を少し変更し、そう:)
を処理するために、動物がたくさんあるでしょうとき
ハードコードされたチェックを入れると、スケールすることは困難です。 animals
をオブジェクトの配列にします。何かのように:と仮定すると、
$scope.animals = [{name: "ABC", locale: "en"}, {name: "XYZ", locale: "de"}];
あなただけanimals
配列を反復処理し、それに応じてレンダリングし、
$scope.selectedlocale = 'en';
今選択したロケールとしてen
を持っている:
<div ng-repeat="animal in animals">
<div ng-if="animal.locale === selectedLocale">
{{ animal.name }}
</div>
</div>
注
ng-show
は - 要素がDOMにあるようにしましょうが、隠された条件が
ng-if
を失敗した場合 - 条件はそれはあなたが持っている問題ではない場合、それは、余分なウォッチャーを追加するだけのことを失敗した場合、要素はDOMにあることがないようにしましょう。
ベターは次のようになります。
<div ng-if="locale == 'en'">{{animal.name_en}}</div>
あなたがこの方法でいることだろう場合:NGを-場合は使用している場合、その要素にのみレンダリングされます
<div>{{ if(locale == 'en') animal.name_en }}</div>
あなたは、div要素が常にレンダリングされますexpressionがtrueを返すとき
ありがとう、私はそれが動作すると思います。 しかし、あなたはどのようにロケールを手に入れますか?今私は瞬間を使用しようとしていますが、常にデフォルトのロケールを返します。 – Novikov
明示的に 'en'に設定して、ユーザーが自分自身を選択してビューを更新できるドロップダウンを提供することができます。 2番目のオプションは、 'navigator.language'または' moment.locale(); ')です。 – softvar
質問の要件を満たしている場合は、答えとしてマークしてください:) – softvar