推送到对象/数组时,ngShow不会更新

时间:2014-06-13 13:05:11

标签: javascript angularjs ng-show

这可能是不可能的,但是如果没有任何数据我会隐藏一个列表然后希望显示这个列表,如果有什么东西被推到它。

这是一个有效的例子 - 理论上,“No todos found”消息应该消失,然后出现一个列表。我在Add按钮下面添加了$ scope.todos转储,以显示$ scope更新 http://plnkr.co/edit/4hwkwn?p=preview

我可以在add()调用后告诉DOM更新吗?

3 个答案:

答案 0 :(得分:1)

ng-show显示值是真实的,在示例中,您传递的是一个空数组。虽然数组是空的,但它是一个truthy值,这意味着当在布尔上下文中求值时,该值强制为true。

如果您希望在列表为空时隐藏列表,则可以执行ng-show="todos.length"评估为0等于false并因此隐藏该元素。同样的逻辑适用于ng-hide

Plunkr

答案 1 :(得分:0)

根据todos列表是否为空隐藏或显示:

<p ng-hide="todos.length >0">No todos found.</p>

<ul ng-show="todos.length > 0">
  <li ng-repeat="todo in todos">{{todo.title}}</li>
</ul>

答案 2 :(得分:0)

您可以为条件创建表达式以显示或隐藏项目,例如您可以这样写:

<ul ng-show="todos.length >= 1">
      <li ng-repeat="todo in todos">{{todo.title}}</li>
    </ul>

有关表达式的更多信息:https://docs.angularjs.org/guide/expression