【问题标题】:condition met ngShow AND ngHide条件满足 ngShow AND ngHide
【发布时间】:2016-09-12 02:51:55
【问题描述】:

我试图在数据加载时显示加载图标,然后在数据准备好时显示数据。 问题是我等了几秒钟,我可以看到加载图标和数据...

这是我的代码

$scope.items[y].content.push({ text: '', loading: true });

API.getContent(id, x, y, function (response, x, y) {

    $scope.items[y].content[x].loading = false;
    $scope.items[y].content[x].text = response.data.text;
});

我的看法:

<i ng-show="item.loading" class="fa fa-spinner fa-pulse fa-2x"></i>
<p ng-hide="item.loading" class="portal-subtitle" ng-bind-html="item.text"></p>

我的内容是异步加载的。当我得到结果时,加载值设置为 false,所以此时图标应该是不可见的......但它不是! (如图所示)。

知道如何解决这个问题吗?

编辑:

我显示了我的“item.loading”的值。似乎当值从 true 变为 false 时,会显示文本,但图标仍会在这里停留几秒钟......这有帮助吗?

感谢您的帮助

【问题讨论】:

  • 尝试先写 ng-hide 然后再写 ng-show。这样 DOM 就知道隐藏数据了。例如。 &lt;p ng-hide="item.loading" class="portal-subtitle" ng-bind-html="item.text"&gt;&lt;/p&gt;&lt;i ng-show="item.loading" class="fa fa-spinner fa-pulse fa-2x"&gt;&lt;/i&gt;
  • 我试过..但遇到了同样的问题。图标就在文本之后。但仍然显示:/
  • 您的 item.loading 工作正常吗?你试过item.loading == true
  • “正常工作”是什么意思?我只是将其设置为 true 或 false :/ 我尝试了“== true”,结果相同。我会更新我的问题以获取新信息
  • 这可能是在回避手头的问题,但您是否尝试过使用 ng-if 而不是 ng-show?

标签: javascript html angularjs http-get


【解决方案1】:

如果您使用的是 ng-animate,请将其添加到您的 css:

.ng-hide.ng-hide-animate{display: none !important; }

在 ng-hide 启动之前,动画正在等待完成。

上面的css会在ng-hide和ng-hide-animate重合后立即隐藏元素。

【讨论】:

  • 不,还是一样...实际上,我正在这样做,我创建了这个加载值来尝试修复它...:/
  • hmmm...好吧,让我们试着追溯一下。这里的问题不在于更改的值,而是动画/文本的实际渲染。您是否有机会在代码中使用 ng-animate?似乎有些人对此有疑问:stackoverflow.com/questions/26938021/…
  • 伙计……成功了……不可思议!非常感谢,无法弄清楚...更新您的答案,正在使用 ngAnimate,并添加“.ng-hide.ng-hide-animate{display: none !important; }” 修复它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 2016-08-10
相关资源
最近更新 更多