2016-04-23 11 views

Antwort

1

Ja, das kann man in AngularJS leicht tun.

eine hartkodierte Check Putting maßstabs wäre schwierig, wenn man viele Tiere haben, werde :)

So handhaben, ein wenig Ihrer Struktur zu verändern. Lassen Sie die animals ein Array von Objekten sein. Etwas wie:

$scope.animals = [{name: "ABC", locale: "en"}, {name: "XYZ", locale: "de"}]; 

Angenommen, Sie haben en als ausgewählte locale

$scope.selectedlocale = 'en'; 

Nun iterieren nur über die animals Array und machen dementsprechend:

<div ng-repeat="animal in animals"> 
    <div ng-if="animal.locale === selectedLocale"> 
     {{ animal.name }} 
    </div> 
</div> 

Hinweis

ng-show - lassen Sie das Element in DOM sein, aber versteckt, wenn die Bedingung

ng-if nicht - lassen Sie das Element nicht in DOM sein, wenn die Bedingung nur nicht, dass es zusätzliche Beobachter fügt hinzu, wenn das nicht das Problem ist, die Sie haben.

+0

Danke, ich denke, dass es funktionieren würde. Aber wie erhalten Sie aktuelle Locale? Jetzt versuche ich Moment zu verwenden, aber es gibt immer das Standardgebietsschema zurück. – Novikov

+1

Sie können es explizit auf "en" setzen und ein Dropdown-Feld bereitstellen, in dem der Benutzer seine eigenen auswählen und entsprechend Ihre Ansichten aktualisieren kann. Die zweite Option ist: 'navigator.language' oder' moment.locale(); ' – softvar

+0

Bitte markieren Sie diese als Antwort, wenn sie die Anforderungen der Frage erfüllt :) – softvar

0

Besser wäre:

<div ng-if="locale == 'en'">{{animal.name_en}}</div> 

Wenn Sie das tun würde, dass durch diese Art und Weise:

<div>{{ if(locale == 'en') animal.name_en }}</div> 

Sie haben div immer gemacht, wenn Sie verwenden ng-wenn dann Element nur wiedergegeben werden Wenn der Ausdruck "True" zurückgibt