2015-03-25 558 views
0

我曾尝试以下,但使用时,我仍然得到一个闪烁NG-显示:Angularjs - ng-cloak/ng-show elements blink伍秀引起闪烁

我使用的模板如下加载我的顶部导航:

<div data-ng-controller="userInfoCtrl"> 
    <a href="#!home">Home</a> 
<a href="#!add-item">Add Item</a> 
<a href="#!settings" data-ng-show="display">Settings</a> 

这里是我的控制器:

// User Info 
appControllers.controller('userInfoCtrl', ['$scope', 'appAdminCheck', function ($scope, appAdminCheck) { 

    // Set value for using ng-show/ng-hide 
    appAdminCheck().then(function (isAdmin) { 
     if (isAdmin == true) { 
      $scope.display = true; 
     } 
    }); 
}]); 
+1

向我们展示更多的代码。这是不够的。 ng-show在哪里? – squiroid 2015-03-25 05:00:47

+1

@squiroid那里''Settings不 – 2015-03-25 05:13:33

+0

'display'已设置为false最初,或使用NG-如果将解决您的问题.. – 2015-03-25 05:13:34

回答

0

我发现了这个问题。我在每个视图中都将导航加载为模板,因此当我更改路线时,导致ng显示项目闪烁。将模板移入我的索引页面可以解决问题,因为它只加载一次。例如:

<%--Container for HTML, inclusive of AngularJS App and responsive aspects--%> 
<div class="container"> 

    <%--Include top menu--%> 
    <div data-ng-include="'../Templates/topmenu.html'"></div> 

    <%--Load Angular Views--%> 
    <div data-ng-view></div> 

    <%--Footer of page. Could be an include as well--%> 
    <hr> 
    <footer></footer> 
</div> 
3

试试这个,

使用ng-classstyle='visibility: hidden'

<a href="#!settings" style="visibility: hidden" ng-class='{forceShow: display}'>Settings</a> 

style="visibility: hidden"隐藏<a>最初然后,当display谈到forceShowtrue类将增加<a>通过ng-class

和力visibility: visible$scope.display == true

<style> 
    .forceShow { 
     visibility: visible !important; 
    } 
</style> 

这里是Demo Plunker

+0

我知道它会工作,但为什么需要破解?而我们提供了ng-show指令?请你详细说明原因。 – 2015-03-25 05:14:52

+1

我与潘卡parkar同意:-P – squiroid 2015-03-25 05:15:15

+0

@ k.Toress做你能够重现上述问题,看到这个plunkr http://plnkr.co/edit/1xbWnKEfokk5fr1I0qLk?p=preview,你怎么能解决这个问题,而再现它.. – 2015-03-25 05:18:03