Lux*_*001 5 javascript syntax bitwise-operators and-operator angularjs
我无法使&操作符在Angular ng-if表达式中工作(与一些位标志一起使用).假设我们有这样的HTML:
<div ng-if="value & 2"> </div>
Run Code Online (Sandbox Code Playgroud)
如果value等于3,则按位运算应返回2,因此返回真值.
但是,Angular Syntax Error每次都会抛出一个异常.操作不被允许吗?或者我做错了什么?
链接到plunker.
编辑:我已经通过使用一个简单的函数解决了我的问题:
$scope.checkFlag = function(value, flag){
return value & flag;
}
Run Code Online (Sandbox Code Playgroud)
但我真的不喜欢这个解决方案.有没有办法在它中使用它ng-if(显然不使用该功能)?
您不能&在Angular表达式中使用按位运算符.根据文件:
Angular表达式就像JavaScript表达式,但有以下区别:
- ...
- 您不能在Angular表达式中使用Bitwise
,或void运算符.如果要运行更复杂的JavaScript代码,则应将其设置为控制器方法并从视图中调用该方法.
关于命名法的注释:&是按位 AND运算符; &&是逻辑 AND运算符.
更新:你的checkFlag函数可能是最好的解决方法,因为它的名字清楚地表明它的作用(这就是我将要使用的),但如果你绝对不想要额外的函数,你可以使用以下等效表达式:
<div ng-if="value % 4 >= 2"> </div>
Run Code Online (Sandbox Code Playgroud)
一般来说,(value & x) != 0(其中x2的幂)相当于value % (2 * x) >= x.