1

这是我的 HTML(除其他外):

<button type="button" class="btn btn-primary ng-cloak" ng-click="ctrl.add(ctrl.userProfile.username)" ng-hide="ctrl.userProfile.added">Add</button>

上面的 HTML 扩展了这个 HTML 页面:

<html ng-app="UserPageApp">
    <head>
    <meta charset="utf-8">
    <title></title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="css/bootstrapCSS/css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="css/base.css">
    <script src="js/jquery-1.11.3.min.js"></script>
    <script src="js/angular.js"></script>
    <script src="js/base.js"></script>
    <script src="js/bootstrapJS/bootstrap.min.js"></script>
    <base href="/">
    </head>

这是我的 base.css(以及其他一些东西):

[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
  display: none !important;
}

问题是,当页面加载时,“添加”按钮会出现,然后在一秒钟后消失(即使 ng-hide 评估为 True。注意:这就是我所说的“闪烁”)。如果 ng-hide 评估为 True,我有没有办法根本不允许按钮显示?

编辑:当我改变class="btn btn-primary ng-cloak"class="btn btn-primary ng-cloaks"使它成为我的 CSS 时:

/* add ng-cloaks */
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak, .ng-cloaks {
  display: none !important;
}

然后它成功不显示按钮。好像有些 JS 在加载时删除了 ng-cloak?

编辑 2:我从按钮中删除了 ng-hide,结果发现 ng-cloak 类甚至没有添加到按钮中(我在 Chromium 中使用了“检查元素”,发现 ng-cloak CSS 甚至没有已应用并且 ng-cloak 类不会出现在按钮 lass 上)。因此,AngularJS 似乎出于某种原因正在删除 ng-cloak 类(就像我之前提到的,当我将其更改为 .ng-cloaks 时,它工作得非常好)。

4

1 回答 1

1

发现错误。虽然我没有在我的帖子中提到它,ctrl.userProfile.added但最初并不存在(在我的 user.js 文件中,我self.userProfile = []最初拥有的只是)。然后我做了一个 get 请求并加载self.userProfile它然后变成self.userProfile = {'added': true}. 所以我猜 AngularJS 正在显示按钮,因为self.userProfile.watching最初是未定义的。

于 2015-11-12T01:37:14.890 回答