ReynierPM
ReynierPM

Reputation: 18660

Show content if $scope.displayMsg is true

I have this piece of code in AngularJS/Javascript:

var currBrowser = deviceDetector.browser,
    currBrowserVersion = deviceDetector.browser_version;

switch (currBrowser) {
    case 'chrome':
        if (parseInt(currBrowserVersion) <= 43) {
            $scope.displayMsg = true;
        }
        break;
    case 'safari':
        if (parseInt(currBrowserVersion) <= 8) {
            $scope.displayMsg = true;
        }
        break;
    case 'ie':
        if (parseInt(currBrowserVersion) <= 11) {
            $scope.displayMsg = true;
        }
        break;
    case 'firefox':
        if (parseInt(currBrowserVersion) <= 39) {
            $scope.displayMsg = true;
        }
        break;
    default:
        $scope.displayMsg = true;
        break;
}

console.log('browser' + currBrowser);
console.log('browser version' + currBrowserVersion);
console.log('displayMsg' + $scope.displayMsg);

Lets said that currBrowser is chrome and currBrowserVersion is "43.0.2357.81" (note double quotes here, this, I think, is a string). I want to display a message on the view only if $scope.displayMsg is true so I wrote this on the view:

<div ng-if="displayMsg == 'true'">Display something here</div>

But text isn't displayed at view. The console.log() show this:

browser chrome
browser version 43.0.2357.81
displayMsg true

Apparently message should be shown, why is not? What I am doing wrong?

Upvotes: 1

Views: 46

Answers (1)

Daniel Cottone
Daniel Cottone

Reputation: 4480

Because $scope.displayMsg is a boolean value, the expression displayMsg == 'true' will always evaluate to false because you are comparing it to a string 'true'.

You should only need to have:

<div ng-if="displayMsg">Display something here</div>

Upvotes: 2

Related Questions