代字号运算符不在angularjs中工作?

时间:2016-11-13 12:24:13

标签: angularjs angular-ng-if

代字号操作符~无法在ng-if指令中工作,但我可以检查此条件message.indexOf('angular') > 0。 我想知道为什么tilde运算符不能在HTML中工作。

在html中:

<div ng-if="~message.indexOf('angular') ? true : false">...</div>

在angularJS中:

$scope.message = 'Hello angular';

控制台中出现错误

angular.js:13920 Error: [$parse:lexerr] Lexer Error: Unexpected next character  at columns 0-0 [~] in expression [~message.indexOf('angular') ? true : false].
http://errors.angularjs.org/1.5.8/$parse/lexerr?p0=Unexpected%20nextharacter%20&p1=s%200-0%20%5B~%5D&p2=~message.indexOf('angular')%20%3F%20true%20%3A%false
    at https://code.angularjs.org/1.5.8/angular.js:68:12
    at Lexer.throwError (https://code.angularjs.org/1.5.8/angular.js:14179:11)
    at Lexer.lex (https://code.angularjs.org/1.5.8/angular.js:14101:16)
    at AST.ast (https://code.angularjs.org/1.5.8/angular.js:14303:30)
    at ASTCompiler.compile (https://code.angularjs.org/1.5.8/angular.js:14771:31)
    at Parser.parse (https://code.angularjs.org/1.5.8/angular.js:15700:29)
    at $parse (https://code.angularjs.org/1.5.8/angular.js:15865:39)
    at ChildScope.$watch (https://code.angularjs.org/1.5.8/angular.js:17104:19)
    at Object.link (https://code.angularjs.org/1.5.8/angular.js:26396:16)
    at https://code.angularjs.org/1.5.8/angular.js:1247:18

1 个答案:

答案 0 :(得分:3)

Angular的模板表达式语法与一样 JavaScript表达式语法,但它仍然不是JavaScript。

列出了in the documentation的主要差异,其中一个说明了

  
      
  • 无按位,逗号和空操作符:您不能在Angular表达式中使用Bitwise,或void运算符。
  •   

Being a bitwise operator~不受支持。