【问题标题】:AngularJS ng-if problems with 'f' and 'F'AngularJS ng-if 与 'f' 和 'F' 的问题
【发布时间】:2014-02-16 09:31:03
【问题描述】:
【问题讨论】:
标签:
javascript
angularjs
logic
【解决方案1】:
ngIf 使用 toBoolean 检查 internally。这是toBoolean 本身:
function toBoolean(value) {
if (typeof value === 'function') {
value = true;
} else if (value && value.length !== 0) {
var v = lowercase("" + value);
value = !(v == 'f' || v == '0' || v == 'false' || v == 'no' || v == 'n' || v == '[]');
} else {
value = false;
}
return value;
}
如您所见,不仅f 字母会出现问题,'0'、'no'、'n' 等也会出现问题。但它不会被修复。不过toBoolean 可能会在未来的版本中被删除。
在 Github 上查看此讨论:https://github.com/angular/angular.js/issues/1229?source=cc
【解决方案3】:
我更喜欢使用双 !! 符号来模仿 JavaScript 的正常工作方式。这使您可以防止 test 为空。
<div ng-if="!!test">{{test}}<div>