2016-10-04 1 views
1

Im Moment habe ich einen zusätzlichen Bereich erstellt, um eine Bedingung zu halten.Angular 1: mehrere Bedingungen mit mehreren Bedingungen ODER wie Bedingungen ausgeschlossen werden, wenn andere Bedingungen erfüllt sind

<div ng-repeat="(key, resultLinks) in resultGroup.resultLinks"> 
    <div ng-if="key < 4 || viewMore" ng-repeat="(subKey, linksWrap) in resultLinks.linksWrap"> 
     <span ng-if="wWidth > 568 || subKey == 0" ng-repeat="links in linksWrap.links"> 
       {{links.linkName}} 
     </span> 
    </div> 
</div> 

Wie würden Sie es ändern, so dass alle Bedingungen in einem div sind. Ie: ng-if = "(Schlüssel < 4 || viewMore) || (wWidth> 568 || subKey == 0)" (so etwas, aber nicht ganz). Wie ist es möglich, eine Bedingung irgendwie auszuschließen, wenn eine andere wahr ist?

Antwort

1

Ist das, was Sie suchen?

(key < 4 || viewMore) && (wWidth > 568 || subKey == 0) 
1

ist es möglich, eine Bedingung irgendwie auszuschließen, wenn eine andere wahr ist?

Das ist genau was OR (||) Operator tut. Wenn (key < 4 || viewMore)true ist, geht es nicht weiter, (wWidth > 568 || subKey == 0) wird nicht ausgeführt.

sollte diese Arbeit:

<div ng-if="(key < 4 || viewMore) || (wWidth > 568 || subKey == 0)" ng-repeat="(subKey, linksWrap) in resultLinks.linksWrap"> 
     <span ng-repeat="links in linksWrap.links"> 
       {{links.linkName}} 
     </span> 
    </div> 

Wie Sie es sieht ziemlich hässlich sehen. Ich würde Logik aus Vorlage bewegen:

<div ng-if="isVisible(key, subKey)"... > 

Irgendwo in Ihrem Controller:

$scope.isVisible = function(key, subKey){ 
    return (key < 4 || $scope.viewMore) || ($scope.wWidth > 568 || subKey == 0) 
} 
+0

Ich vermisste die && anstelle von || – yodalr

+0

Nur als OT. Warum ist es in DOM hässlich? Ich sehe keinen Grund, warum ich den Code in zwei Teile aufteilen sollte, wenn ich es in einem behalten kann, oder? – yodalr

+0

Hässlichkeit ist sehr subjektiv :) Einige Leute behalten ihren Code in '