Search code examples
angularjsangularjs-scopeangular-uiangularjs-ng-repeat

Bitwise Angular Expression not working


I have a basic ng-show expression as follows:

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

However, this fails with the following msg: "Token '&' is unexpected, expecting [)] at column 18 of the expression".

Does Angular support bitwise operations, or do I need to write a function to evaluate something as simple as that?


Solution

  • From the angularjs github buglist: https://github.com/angular/angular.js/issues/2838

    http://docs.angularjs.org/guide/expression "Angular Expressions vs. JS Expressions It might be tempting to think of Angular view expressions as JavaScript expressions, but that is not entirely correct, since Angular does not use a JavaScript eval() to evaluate expressions."

    You can use a filter to achieve the effect as such:

    angular.module('project', [])
    .filter('bitwiseAnd', function () {
        return function (firstNumber, secondNumber) {
            return ((parseInt(firstNumber, 10) & parseInt(secondNumber, 10)) === parseInt(secondNumber, 10));
        // return firstNumber % secondNumber > 0
        };
    });