【问题标题】:Two toggling elements with ngHide flash on screen momentarily两个带有 ngHide 的切换元素在屏幕上瞬间闪烁
【发布时间】:2016-05-12 03:27:40
【问题描述】:

我有几个基于范围属性显示文本的容器:

<style>
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak{
    display: none !important;
}
</style>
<a ng-hide="show===false" ng-cloak>item 1</a>
<a ng-hide="show===true"  ng-cloak>item 2</a>
<span ng-click="toggle()">toggle</span> 
//js
var app = angular.module('appy', []);
app.controller('ctrl', function($scope){
  $scope.show = false;
  $scope.toggle = function(){
    $scope.show = !$scope.show;
  };
});

https://jsbin.com/numaxiroka/edit?html,js,output

这个简单的示例在 JSBIN 中有效,但在我的页面上,内容“项目 1”和“项目 2”都在屏幕上短暂闪烁。我可能做错了什么会导致这两个元素短暂出现?

我一直在使用this 作为参考。

【问题讨论】:

  • 作为开始,它会改进一些事情:第一项是ng-show="show",第二项是ng-hide="show"
  • ngcloak 样式是否在您的实际页面上的内容之前加载?
  • @Dan 我想你在那里丢失了一些文字!

标签: javascript jquery html css angularjs


【解决方案1】:

我建议您做的第一件事是将ng-cloak 放在body 上,而不是每个锚点上。因此,这将有助于隐藏 angular uncompiled 内容 ({{}}) 以显示在正文中的任何位置。


如果您只是想显示锚点,那么我会说确实使用 ng-bind 来呈现如下所示的内部文本

标记

<a ng-bind="show? 'item 1' : 'item 2'" href="{{myHref(show)}}"></a>

代码

$scope.myHref = function(){
   if(show) 
      return 'something/someaction1' 
   else 
      return 'something/someaction2' ;
}

【讨论】:

  • 我不确定我是否在关注。你绑定了show,但是我没有看到你在任何地方使用它。那么你的myHref 方法总是返回相同的字符串..?
  • @thomas 我这样做只是为了演示.. 首先你应该尝试将ng-cloak 放在 body 元素上..
  • 最终我没有使用这个,但它仍然是一个干净的解决方案。非常感谢!
  • @thomas 我可以知道你最终使用了什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 2011-09-29
相关资源
最近更新 更多