2016-11-07 1 views
0

Filter ich servers auf die Bedingung für die Datensätze mit serverState und die initialstate in ihnen sind nicht gleich.wie mit einem Vergleich zwischen 2 Felder

{{servers | filter : serverState != initialState}} 
+0

Können Sie einige Demo-Daten zur Verfügung stellen? –

Antwort

0

Sie können eigene Filter erstellen, die Logik auf den Server-Filter hat, die keine Anfangszustand Anpassung mit initalState Variablenwert.

Ihr kundenspezifischer Filter

myApp.filter('filterServer', function() { 
    return function (servers,initialState) { 
    var filteredArray=[]; 
    for (var k = 0; k < servers.length; ++k) { 
    var server = servers[k]; 
    if (server.state != initialState) filteredArray.push(server); 
    } 
    return filteredArray; 
    }; 
}); 

Ihre HTML

<tr ng-repeat="server in Servers | filterServer : initialState"> 
     <td style="width:50%;fload:left"> 
      <span ng-bind="server.server"></span> 
     </td> 
     <td style="width:40%;fload:left"> 
     <span ng-show="server.state==1">State 1</span> 
     <span ng-show="server.state==2">State 2</span> 
     </td> 
    </tr> 

Für Probe überprüfen Sie bitte diesen Link

http://fiddle.jshell.net/zxr0qa1k/5/

+0

vielen Dank, hat sich nur gefragt, ob es einen Weg gibt, es ohne einen benutzerdefinierten Filter zu tun? –

+0

Sie können es tun, aber Datenmanipulation benötigen. Wenn Sie mit der Bedingung serverState! = InitialState fortfahren möchten, gibt dies den bool -Wert zurück und versucht, den Filter auf den zurückgegebenen bool -Wert anzuwenden. Wenn Sie Ihrem Array eine weitere Bool-Eigenschaft hinzufügen und versuchen, diese Eigenschaft zu filtern. – user3249448