6

У меня есть основное выражение нг-шоу следующим образом:побитовое Угловая Expression не работает

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

Однако это не удается с помощью следующей сообщ: «маркеров„&“является неожиданным, ожидающей [)] в колонке 18 выражения «.

Угловая поддержка побитовых операций, или мне нужно написать функцию, чтобы оценить что-то простое?

ответ

5

От angularjs GitHub buglist: https://github.com/angular/angular.js/issues/2838

http://docs.angularjs.org/guide/expression «Угловые выражения против JS Выражения Это может быть заманчиво думать Угловое зрения выражения как выражения JavaScript, но это не совсем правильно, так как не Угловая используйте JavaScript eval() для оценки выражений. "

Вы можете использовать фильтр для достижения эффекта, как, например:

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

Я написал небольшой модуль для побитовая операция. Проверьте [угло-бит-фильтр] [1] [1]: https://github.com/lborgav/angular-bitwise-filter – lborgav

+0

Это не работает, если второе число больше первого. Например, «1 & 9» также следует приравнивать к истине. Вместо этого следует использовать return ((parseInt (firstNumber, 10) & parseInt (secondNumber, 10))> 0) " – garethb

1

Он не поддерживает согласно doc.

Думал он упомянул '|' на документ, но не пугайтесь, '|' не побитовое OR это Angularjs-х filter.

0

Вы можете использовать * /% с простыми числами вместо | &^с битами

Я Ussing это:

как выражения
ng-class="{'active':(filter% 2)}" 
ng-click="filter = filter % 2 ? filter * 2 : filter/2" 
ng-class="{'light':(filter % 2)}" class="fa fa-eye" 

С простых чисел 2, 3 и 5

вы должны начать с $scope.filter=1

Смежные вопросы