javascript - 两个带有 ngHide 的切换元素瞬间在屏幕上闪烁

标签 javascript jquery html css angularjs

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

<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 中有效,但在我的页面上,内容“item 1”和“item 2”都在屏幕上瞬间闪烁。我做错了什么会使这两个元素都短暂出现?

我一直在使用 this供引用。

最佳答案

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


如果您只是想显示 anchor ,那么我会说请使用 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' ;
}

关于javascript - 两个带有 ngHide 的切换元素瞬间在屏幕上闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37120664/

相关文章:

javascript - 在文本区域中模仿插入符号

jquery - 我们如何将跨度添加到 ul 内的文本,即 jquery 或 css 中的 li 之外

php - 如何将 html 元素值提交给其在 Kohana 中的相应 Controller

javascript - 如何在不发布表单的情况下获取文本字段的值

javascript - 用于隐藏/显示菜单的外部 JavaScript 不起作用

html - 多行文本标签

javascript - 限制Javascript脚本互联网访问

javascript - 如何使用 MVC.NET Bundle 配置文件从 js 文件中删除 console.log

javascript - 如何从多个元素中删除事件

javascript - 调整 JQuery slider 最小值/最大值