如果变量为空,如何显示/隐藏

85

我想根据变量是否为空来显示/隐藏一个div。

<div ng-show="myvar"></div>
注意:在我的情况下,变量是一个对象。
这是一个非常简单的问题,但我似乎无法让它工作。
谢谢。

相关:https://dev59.com/nmYq5IYBdhLWcg3w0j4T - Robert Harvey
myvar == null 可能是空的 - Gruff Bunny
2
myvar 可以假定哪些非空值? ng-show 会显示任何 truthy 值,只要 myvar 不是 falsenullundefined0、空字符串或 NaN,它就应该可以工作。请提供更多的代码以便了解上下文。 - Philipp Reichart
澄清一下,上面的例子是有效的,我的代码之所以无法运行是由于其他原因。如果mylar为false、null或从未被使用过(即$scope.myvar或$rootScope.myvar从未被调用),则该div将不会显示。一旦给它分配了任何值,该div将会显示,除非该值明确为false。 - Paul Haggo
3个回答

205
<div ng-hide="myvar == null"></div>
或者
<div ng-show="myvar != null"></div>

16
使用<div ng-hide="myvar == null"></div>而非<div ng-show="myvar != null"></div>是一个好的惯例,因为它更易读。 - maicher
13
那要看具体情况。 - Petr Peller
ng-show指令将表达式翻译为$scope.myvar != $scope.null还是$scope.myvar != null?(在此处发布问题https://dev59.com/hozda4cB1Zd3GeqPtfZd) - jperelli
Angular将使用javascript的null。 无论如何,您真的不想开始向作用域添加null,因为null应始终为null(而且如果在表达式中使用,则angular将忽略$scope.null)。 - Gruff Bunny

20

为了澄清,上面的例子是有效的,我在示例中的代码由于其他原因而无法正常工作。

如果myvar为false、null或以前从未使用过(即未调用$scope.myvar或$rootScope.myvar),则div将不会显示。一旦任何值被赋给它,除非该值特别为false,否则div将显示。

以下情况将导致div显示:

$scope.myvar = "Hello World";
或者
$scope.myvar = true;

以下代码可以隐藏div:

$scope.myvar = null;
或者
$scope.myvar = false;

2
在这种情况下,myvar 应该是一个布尔值。如果这个变量为真,它将显示 div,如果为假,则会隐藏。

查看this


那么你的意思是只有当myvar为布尔值时才起作用? - Robert Harvey
我想找到一个解决方案,其中myvar是一个对象。谢谢。 - Paul Haggo
1
它应该是真或假。 - Rodrigo Oliveira
保罗,你的对象返回是什么? - Rodrigo Oliveira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接