如何检查一个范围variables是否在AngularJS模板中是未定义的?

如何检查一个范围variables是不确定的

这不起作用:

<p ng-show="foo == undefined">Show this if $scope.foo == undefined</p> 

这是最干净的方法来做到这一点:

 <p ng-show="{{foo === undefined}}">Show this if $scope.foo === undefined</p> 

无需在控制器中创build帮助function!

使用undefined来做出决定通常是Javascript中devise不好的标志。 你可能会考虑做别的事情。

但是,要回答你的问题:我认为这样做的最好方法是添加一个辅助函数。

 $scope.isUndefined = function (thing) { return (typeof thing === "undefined"); } 

并在模板中

 <div ng-show="isUndefined(foo)"></div> 

更正:

HTML

  <p ng-show="getFooUndef(foo)">Show this if $scope.foo === undefined</p> 

JS

 $scope.foo = undefined; $scope.getFooUndef = function(foo){ return ( typeof foo === 'undefined' ); } 

小提琴: http : //jsfiddle.net/oakley349/vtcff0w5/1/

发布新的答案,因为angular行为已经改变。 检查与undefined的相等性现在在angular度expression式中起作用,至less从1.5开始,如下面的代码所示:

 ng-if="foo !== undefined" 

当ng-if的计算结果为true时,从适当的作用域中删除percentages属性,并调用$ digest,就像你期望的那样从文档中删除元素。

如果foo 不是一个布尔variables,那么这将工作(即你想显示这个时,该variables有一些数据):

<p ng-show="!foo">Show this if $scope.foo is undefined</p>

反之亦然:

<p ng-show="foo">Show this if $scope.foo is defined</p>

如果您使用的是Angular 1,我会推荐使用Angular的内置方法:

angular.isDefined(值);

参考: https : //docs.angularjs.org/api/ng/function/angular.isDefined

<p ng-show="angular.isUndefined(foo)">Show this if $scope.foo === undefined</p>