评估AngularJS中的布尔表达式

mic*_*mia 6 javascript angularjs

我正在测试ng-show和AngularJS表达式,但我找到了一些我无法理解的东西.我创建了一个变量displayed'false'为其分配了一个字符串(不是布尔值).表达式displayed && true被计算为true,第二个div显示没有问题(因为字符串和true应该为true).我知道Angular表达式和JavaScript表达式之间存在一些差异,但是我不知道为什么没有显示第一个div; 似乎displayed是由Angular编译为布尔值.

这是jsfiddle:http://jsfiddle.net/micmia/1psf70tv/3/

模板:

<div ng-controller="MyCtrl">
    <div ng-show="displayed">test1</div>
    <div ng-show="displayed && true">test2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

控制器:

var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', function ($scope, $parse) {
    $scope.displayed = 'false';
});
Run Code Online (Sandbox Code Playgroud)

ela*_*con 3

这就是 Angular 评估字符串'false''f'其他一些字符串的方式。有一个关于它的未解决的错误

请参阅此小提琴适用于更高版本。