2016-11-22 2 views
0

ich brauche Ein-/Ausblenden mehrere Elemente, wenn sie einen Zustand wie folgt überprüfen:AngularJS - Prüfen Sie den Zustand auf ng-wenn

<div id="LineSingleDate" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.SingleDate; })"></div> 
<div id="LineSpotlight" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.InSpotlight; })"></div> 
<div id="LineSubtitle" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.Subtitle; })"></div> 
<div id="LineResumeDescription" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.ResumeDescription; })"></div> 
<div id="LineLocation" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.Location; })"></div> 
<div id="LineCoordinatesGPS" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.CoordinatesGPS; })"></div> 
<!--and 20 more others--> 

Aber es gibt mir diese Fehler für alle jene ng-ifs:

angular.js:13920 Error: [$parse:syntax] Syntax Error: Token '{' is unexpected, expecting [)] at column 53 of the expression [VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.SingleDate; })] starting at [{ return e.Id == VM.Constants.SingleDate; })].

ich habe bereits versucht, zu verwenden, {} und {{}} die Bedingungen Verspannung aber es gibt mir immer einen anderen Fehler wie diese vorherigen.

Wie kann ich das lösen?

HINWEIS 1: Jede Variable und Funktion existiert und funktioniert.

HINWEIS 2: Ich möchte keine Variable für jedes Div auf meinem Controller haben.

+7

Sie wirklich eine Methode auf Ihren Anwendungsbereich für diese haben sollte. –

+1

vereinbart. Dies ist nicht nur nicht lesbar, es ist nicht wartbar und ist wahrscheinlich Teil Ihres Fehlers. –

+0

Ok. Ich wusste nicht, dass das nicht lesbar ist, in anderen Fällen funktioniert es. Vielen Dank – Ninita

Antwort

1

Vielleicht wird Refactoring helfen:

HTML

<div id="LineSingleDate" ng-if="VM.checkAvailability('SingleDate')"></div> 
<div id="LineSpotlight" ng-if="VM.checkAvailability('InSpotlight')"></div> 

-Controller

VM.checkAvailability(fieldName) { 
    return VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants[fieldName]; }) 
} 
Verwandte Themen