当前位置: 首页 > 知识库问答 >
问题:

根据angularjs中的url更改body的类

龚安民
2023-03-14

这是我的url

用于登录-<代码>http://localhost/ang/#/login

对于仪表板-<代码>http://localhost/ang/#/dashboard

这是我的html的body标签

如果这是当前的url是http://localhost/ang/#/login,那么正文应该有class="login-布局"标记,即,

<body ng-cloak="" class="login-layout>

否则它应该有

<body ng-cloak="" class="no-skin">

我试图在php中实现这一点,因为我不能像这里所说的那样在

这在AngularJS本身中可能做到吗?

更新:

我试着用AngularJS做这个

从控制器中,我可以在

var nextUrl = next.$$route.originalPath;                   

但是我怎样才能更改类名。。

共有3个答案

万俟震博
2023-03-14

你可以像我下面的例子那样做

<body ng-cloak="" ng-class="bodyClass" class="login-layout>

$scope.bodyClass = "mainClass"
var nextUrl = next.$$route.originalPath;
if (..) {
   $scope.bodyClass = "sometAnotherMainClass";
}

控制器应该是这样的

angular.module('youAppName').controller('yourController', [ "$scope", function($scope) {
    $scope.bodyClass = "mainClass"
    var nextUrl = next.$$route.originalPath;
    if (..) {
       $scope.bodyClass = "sometAnotherMainClass";
    }
    }]);
岳泳
2023-03-14

我需要在一个项目中做到这一点,我就是这样做到的:

在我的主应用程序控制器中,我有:

// Inject the $location service in your controller
// so it is available to be used and assigned to $scope
.controller('AppCtrl', ["$scope", "$location",...

    // this_route() will be the variable you can use
    // inside angular templates to retrieve the classname
    // use it like class="{{this_route}}-layout"
    // this will give you -> e.g. class="dashboard-layout"
    $scope.this_route = function(){
         return $location.path().replace('/', '');
    };

它在范围上公开当前路由名称。

然后我的身体标签上写着:

<body ng-controller="AppCtrl" class="{{this_route()}}-view" ng-cloak>

您可以类似地将其与$state一起使用,并读取$state.current.url并将其设置为范围

谷梁云瀚
2023-03-14

这就是我会怎么做

<body class="{{currentclass}}" ng-cloak>

现在在登录控制器中只做

$rootScope.currentclass = "login-layout";

在其他控制器中

$rootScope.currentclass = "no-skin";

应用程序内。运行只需检查登录路径。

app.run(function($rootScope, $location){
rootScope.$on('$routeChangeStart', function(event, next, current){
    if ($location.path() == '/login') {
          $rootScope.currentclass = "login-layout";
    }
    else{
          $rootScope.currentclass = "no-skin";
    }
});
 类似资料:
  • 当我运行我的项目时,起始网址是 http://localhost:8080/shah/ 我想盯着网址http://localhost:8080/shah/welcome 这里,控制器的方法有@RequestMapping("/welcome ") 在哪里更改根网址?? 我使用基于注释的配置,包含以下类: Initializer.java WebAppConfig.java 数据库配置.java

  • 问题内容: 我需要根据屏幕分辨率更改templateURL,例如,如果我的屏幕宽度小于768px,则必须加载“ templates / browse-content- mobile.html”;如果屏幕宽度大于768px,则必须加载“ templates / browse-content” .html”。 当前使用的代码。 在这里我正在尝试此代码 此代码块正常工作,它根据那里的分辨率加载移动和桌面

  • 问题内容: 我在AngularJS路由方面遇到了一个大问题。 直到最近,通过以下路线一切都很好: 并使用href: 但是,现在所有的斜杠都被编码为。 因此,当我单击链接或键入浏览器时,URL更改为: http:// localhost:8000 /#%2Falbum%2F1 我已经尝试了几种方法来纠正此问题: 在Windows 10上使用ng- href代替href,不使用第一个/(即)在Home

  • 问题内容: 我已经完成了一次Google搜索,并搜索了我的两本python初学者书籍,以查找执行此操作的方法。我认为这必须是一个简单的任务。基本上,我正在与python一起使用pygame。 我希望如果我单击button1_image,它会更改为button1select_image,对吗?如果单击button2_image,它将button1select_image设置回button1_imag

  • 问题内容: 我正在使用AngularJS,并试图在显示该标签的内容时向菜单添加“当前”类。这是我到目前为止所拥有的,并且在加载页面时可以正常工作: HTML: JS: 当页面网址为或时,这会将“当前”类添加到正确的标记中 问题是,如果我单击第二个选项卡,则不会将类添加到其中。我想我需要某种方法来使指令内部的代码在URL更改时重新运行。有什么办法吗? 问题答案: 在评论中使用来自kfis代码,现在可

  • 我有一个带有ActionListener的JRadioButton,但我不知道如何在点击另一个面板时触发JButton的图标更改。下面列出了两者的代码。选择正确的单选按钮后,图像需要从左键切换到右键。 }