我有一个基本的ng-show表达式如下:
ng-show="((message.status & messageStatus.Spam) != 0)"
然而,这失败了以下消息:" Token'&'是意料之外的,期待[)]在表达式#14; 的第18行。
Angular是否支持按位操作,还是我需要编写一个函数来评估那些简单的函数?
答案 0 :(得分:5)
来自angularjs github buglist:https://github.com/angular/angular.js/issues/2838
http://docs.angularjs.org/guide/expression “角度表达式与JS表达式 将Angular视图表达式视为JavaScript表达式可能很诱人,但这并不完全正确,因为Angular不使用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
};
});
答案 1 :(得分:1)
根据doc不支持。
认为它在文档中提到'|'
但不要混淆,'|'
不是按位OR
它是Angularjs的filter
。
答案 2 :(得分:0)
你可以使用* /%和素数而不是|& ^和位
我在说这个表达:
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
答案 3 :(得分:0)
感谢您的发言。已经失去了几个小时,直到我意识到它不起作用:)
以下是我的解决方法:
ng-show="((message.status & messageStatus.Spam) != 0)"
会变成:
ng-show="(bitwise(message.status, messageStatus.Spam) != 0)"
...
$scope.bitwise = function(n1, n2){
return n1 & n2;
}
适合我的作品!