6

mam podstawową ekspresję ng pokazać jak następuje:bitowe kątowe ekspresja nie działa

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

to jednak nie z następującym MSG: „znaków«&»jest nieoczekiwane, oczekując [)] w kolumnie 18 wyrażenia ".

Czy operacje bitowe obsługują operacje bitowe, czy też muszę napisać funkcję, aby ocenić coś tak prostego?

Odpowiedz

5

Od angularjs github buglist: https://github.com/angular/angular.js/issues/2838

http://docs.angularjs.org/guide/expression „kątowe Ekspresja vs. JS zgłaszanie może to być kuszące, aby myśleć o kątowe widok wyrazu jako wyrażenia JavaScript, ale to nie jest do końca poprawne, ponieważ nie kątowe użyj eval() JavaScript do oceny wyrażeń. "

Można użyć filtru, aby osiągnąć efekt taki jak:

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

Pisałem mały moduł operacja bitowa. Sprawdź [kątowy filtr bitowy] [1] [1]: https://github.com/lborgav/angular-bitwise-filter – lborgav

+0

To nie działa, jeśli druga liczba jest większa od pierwszej. Np. "1 i 9" powinny równać się z prawdą. Powinien być zamiast tego "return ((parseInt (firstNumber, 10) & parseInt (secondNumber, 10))> 0)" – garethb

1

To nie obsługuje według doc.

Myślałem, że wspomniane '|' na doc, ale nie pomylić, '|' nie jest logicznie OR to angularjs na filter.

0

możesz użyć * /% z liczbami głównymi zamiast | &^z bitami

ja ussing to expresions:

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

z liczb 2, 3 i 5

musi zacząć $scope.filter=1