AngularJS ng-if'f'和'F'的问题

Mic*_*hał 9 javascript logic angularjs

任何人都可以向我解释为什么Angularjs ngIf指令会像'f'和'F'一样false

简单示例不起作用:

  <input type="text" ng-model="test" />
  <div ng-if="test">{{test}}<div>
Run Code Online (Sandbox Code Playgroud)

如果你把'f'或'F'没有显示在div中,任何其他字母或正弦都可以正常工作.

演示:http://plnkr.co/edit/wS4PqmARXG2fsblUkLpH?p = preview

dfs*_*fsq 11

ngIf内部使用toBoolean检查.这是它自己: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;
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,不仅会出现f字母问题,还会出现'0','不','n'等问题.虽然不会修复.但是toBoolean在将来的版本中很可能会被删除.

在Github上看到这个讨论:https://github.com/angular/angular.js/issues/1229? source = cc