我有一个基本的 ng-show 表达式如下:
ng-show="((message.status & messageStatus.Spam) != 0)"
但是,这会因以下消息而失败: “Token '&' is unexpected, expecting [)] at column 18 of the expression”。
Angular 是否支持按位运算,还是我需要编写一个函数来评估如此简单的事情?
我有一个基本的 ng-show 表达式如下:
ng-show="((message.status & messageStatus.Spam) != 0)"
但是,这会因以下消息而失败: “Token '&' is unexpected, expecting [)] at column 18 of the expression”。
Angular 是否支持按位运算,还是我需要编写一个函数来评估如此简单的事情?
来自 angularjs github 错误列表:https ://github.com/angular/angular.js/issues/2838
http://docs.angularjs.org/guide/expression “Angular 表达式与 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
};
});
根据文档它不支持。
认为它在文档中提到'|'
但不要混淆,'|'
不是按位OR
它是 Angularjs 的filter
.
您可以将 */% 用于素数而不是 |&^ 与位
我正在使用这个表达式:
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
感谢您的发言。已经失去了几个小时,直到我意识到它不起作用:)
这是我的解决方法:
ng-show="((message.status & messageStatus.Spam) != 0)"
会变成这样:
ng-show="(bitwise(message.status, messageStatus.Spam) != 0)"
...
$scope.bitwise = function(n1, n2){
return n1 & n2;
}
非常适合我!