如何检查作用域变量是否为未定义?
这种方法不起作用:
<p ng-show="foo == undefined">Show this if $scope.foo == undefined</p>
如何检查作用域变量是否为未定义?
这种方法不起作用:
<p ng-show="foo == undefined">Show this if $scope.foo == undefined</p>
这是最干净的做法:
<p ng-show="{{foo === undefined}}">Show this if $scope.foo === undefined</p>
在控制器中不需要创建帮助函数!
Error: [$parse:syntax] Syntax Error: Token '{' invalid key at ..
的错误信息。 - fabpico在JavaScript中,使用undefined
来做决策通常是不良设计的标志。你可能需要考虑其他方式。
然而,为了回答你的问题:我认为最好的方法是添加一个辅助函数。
$scope.isUndefined = function (thing) {
return (typeof thing === "undefined");
}
并且在模板中
<div ng-show="isUndefined(foo)"></div>
Corrected:
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' );
}
undefined
不是JavaScript关键字(它是一个变量)。请参阅https://dev59.com/_Ww05IYBdhLWcg3wiybg。 - Josh Darnellreturn (foo === undefined);
而不是return (typeof foo === 'undefined');
。 - volent由于Angular的行为已经改变,我发布了新答案。现在,在Angular表达式中使用undefined进行比较是有效的,至少在1.5版本中是有效的,如下代码所示:
ng-if="foo !== undefined"
foo
不是布尔变量,那么这将起作用(即当该变量有一些数据时,您想显示此内容):
<p ng-show="!foo">如果$scope.foo未定义,则显示此内容</p>
反之亦然:
<p ng-show="foo">如果$scope.foo已定义,则显示此内容</p>
您可以使用双竖线运算符来检查语句后的值是否未定义:
<div ng-show="foo || false">
Show this if foo is defined!
</div>
<div ng-show="boo || true">
Show this if boo is undefined!
</div>
关于双管道的技术解释,我更倾向于查看此链接: https://dev59.com/yHE85IYBdhLWcg3wYicB#34707750
正如@impulsgraw所写。在管道符后面需要检查未定义的情况:
<div ng-show="foo || undefined">
Show this if foo is defined!
</div>
<div ng-show="boo || !undefined">
Show this if boo is undefined!
</div>
angular.isDefined(value);
参考文献:https://docs.angularjs.org/api/ng/function/angular.isDefined
试试这个 angular.isUndefined(value);
https://docs.angularjs.org/api/ng/function/angular.isUndefined
<p ng-show="angular.isUndefined(foo)">如果 $scope.foo === undefined,则显示此内容</p>