Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么即使使用自定义指令,Angular ng斗篷也会覆盖我的ng show_Javascript_Css_Angularjs - Fatal编程技术网

Javascript 为什么即使使用自定义指令,Angular ng斗篷也会覆盖我的ng show

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) { $

我试图在登录时隐藏我的布局页面,我将ng show设置为布尔值,当成功登录时,该值将设置为true。无论我做什么布局页面都不会显示自己。我遵循了这个答案,但是我仍然没有看到页面。当我查看开发工具时,我可以看到我的自定义样式正在被应用

Html代码:

<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"> 
    ...