6

Ich habe eine grundlegende ng-Show Ausdruck wie folgt:Bitwise Angular Expression nicht funktioniert

ng-show="((message.status & messageStatus.Spam) != 0)" 

schlägt jedoch fehl, dies mit dem folgenden msg: „Token '&' ist unerwartet, erwartet [)] in Spalte 18 des Ausdrucks ".

Bietet Angular bitweise Operationen, oder muss ich eine Funktion schreiben, um etwas so einfach zu bewerten?

Antwort

5

Von der AngularJS Github Bugliste: https://github.com/angular/angular.js/issues/2838

http://docs.angularjs.org/guide/expression „Angular Ausdrücke vs. JS Expressions Es könnte sein, verlockend von Angular Ansicht Ausdrücke wie JavaScript Ausdrücke zu denken, aber das ist nicht ganz richtig, da Angular nicht Verwenden Sie ein JavaScript eval(), um Ausdrücke auszuwerten. "

können Sie einen Filter verwenden, um die Wirkung als solche zu erreichen:

angular.module('project', []) 
.filter('bitwiseAnd', function() { 
    return function (firstNumber, secondNumber) { 
     return ((parseInt(firstNumber, 10) & parseInt(secondNumber, 10)) === parseInt(secondNumber, 10)); 
    // return firstNumber % secondNumber > 0 
    }; 
}); 
+0

beginnen Ich habe ein kleines Modul geschrieben für bitweiser Betrieb Überprüfen Sie [Winkel-Bit-Filter] [1] [1]: https://github.com/lborgav/angular-bitwise-filter – lborgav

+0

Dies funktioniert nicht, wenn die zweite Zahl größer als die erste ist. ZB sollte "1 & 9" auch gleich sein. Sollte stattdessen "return ((parseInt (firstNumber, 10) & parseInt (secondNumber, 10))> 0) sein" – garethb

1

Es ist nicht die doc nach Unterstützung ist.

Dachte, es '|' auf dem doc erwähnt, aber nicht verwirrt, '|' ist OR nicht bitweise es ist AngularJS der filter.

0

können Sie * /% mit Primzahlen anstelle von | verwenden &^mit Bits

ich diese expresions bin Ussing:

ng-class="{'active':(filter% 2)}" 
ng-click="filter = filter % 2 ? filter * 2 : filter/2" 
ng-class="{'light':(filter % 2)}" class="fa fa-eye" 

Mit den Primzahlen 2, 3 und 5

müssen Sie mit $scope.filter=1