Javascript 为什么即使使用自定义指令,Angular ng斗篷也会覆盖我的ng show
我试图在登录时隐藏我的布局页面,我将ng show设置为布尔值,当成功登录时,该值将设置为true。无论我做什么布局页面都不会显示自己。我遵循了这个答案,但是我仍然没有看到页面。当我查看开发工具时,我可以看到我的自定义样式正在被应用 Html代码:Javascript 为什么即使使用自定义指令,Angular ng斗篷也会覆盖我的ng show,javascript,css,angularjs,Javascript,Css,Angularjs,我试图在登录时隐藏我的布局页面,我将ng show设置为布尔值,当成功登录时,该值将设置为true。无论我做什么布局页面都不会显示自己。我遵循了这个答案,但是我仍然没有看到页面。当我查看开发工具时,我可以看到我的自定义样式正在被应用 Html代码: <div class="my-hidden-xs container" ng-show="isLoggedIn"> 控制器: function LogInController($scope, $http, $state) { $
<div class="my-hidden-xs container" ng-show="isLoggedIn">
控制器:
function LogInController($scope, $http, $state) {
$scope.isLoggedIn = false;
$scope.signOn = function () {
$http.post('http://localhost:a location on my backend').then(function (response) {
if (response.data.token) {
$scope.$apply.isLoggedIn = true;
$state.go('main');
//...
我做错了什么?我不熟悉angular,但以前使用过隐藏和显示,没有这个问题。所有指令都有自己的执行优先级,我无法在文档中找到详细信息,但您可以查看源代码来找到它,例如:
您也可以用同样的方法设置指令的优先级。我认为您需要更改逻辑。默认情况下,不要应用
my hidden xs
class,而是使用ngClass
指令:
<div class="container" ng-class="{'my-hidden-xs': !isLoggedIn}">
你可以尝试更改你的css吗?显示:无!重要信息,我在success函数中看不到任何更改它的代码 您可以使用以下内容:
<div class="container {{checkVisible(isLoggedIn)}}">
等等。
ng斗篷不会覆盖您的ng show,所发生的是定义display:两次都没有,ng show不会影响您的类定义
仅将您的DIV行更改为:
<div class="container" ng-show="isLoggedIn">
当然,如果您的页面有一个flick,请插入一个带有ng-clope的外部div
<div ng-cloak>
<div class="container" ng-show="isLoggedIn">
...
...
我找到了解决方法,我在配置中创建了一个函数,用于设置is logged in属性,以便
ng show=“isLoggedIn”
我有
ng show=“isLoggedIn()”
然后,当我验证我的JWT时,我调用传递true的函数,这有点困难,但它可以工作,我可以继续,我有一种感觉,当我在前端进一步验证JWT时,我会将其中的一些抽象到服务中。
$scope.$apply.isLoggedIn=true代码>?可能$scope.isLoggedIn=true
@dsfq我也尝试了$scope,但没有运气这看起来是正确的路径,但我仍然得到了相同的结果,我想我还需要阅读ngDocs。感谢您的输入,但无论如何,我会尝试使用ngRoute、ngView或ngInclude,因为如果用户未登录,我不喜欢加载所有页面并将其隐藏。这就是问题所在。谢谢你@Utku
$scope.checkVisible()
{
if(isLoggedIn)
return '';
else
return 'my-hidden-xs';
}
<div class="container" ng-show="isLoggedIn">
<div ng-cloak>
<div class="container" ng-show="isLoggedIn">
...