[英]Login page with different css and js files
我是angularjs的新手,刚刚开始使用ui.router来管理不同视图的项目,我面临的问题是例如我拥有一个母版页index.html。
<html lang="en" ng-app="leadsangularApp">
<head>
<link href="style1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div ui-view=""></div>
</body>
</html>
我所有的视图都加载到<div ui-view=""></div>
但是如果我的登录页面具有完全不同的CSS样式(头)和js文件(页脚),该怎么办,我需要将其加载到不同的模板中,例
<html lang="en" ng-app="leadsangularApp">
<head>
<link href="style2.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div ui-view=""></div>
</body>
</html>
如果我尝试使用嵌套的ui视图
app.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/home');
// States
$stateProvider
.state('root', {
abstract: true,
templateUrl: 'views/default.html',
})
.state('home', {
parent: "root",
url: "/home",
templateUrl: 'views/main.html',
})
.state('login', {
url: "/login",
templateUrl: 'views/login.html',
});
});
我的/ login页面具有不同的视图,但仍然加载相同的css和js文件,我希望我的/ login页面具有完全不同的head和footer部分,如何实现?
一般来说,这不是推荐的方法,但是有一个github项目针对CSS执行此操作: https : //github.com/manuelmazzuola/angular-ui-router-styles 。 ui-router不直接支持它。
您可以使用ng-href
。 根据您的需要,您将必须监听$stateChangeSuccess
并更改绑定到ng-href
。
对于您的HTML,请执行以下操作:
<link rel="stylesheet" ng-href="{{stylesheet}}" />
变量stylesheet
可以动态绑定到您的范围,并且可以根据需要更改值。
然后,您可以听$stateChangeStart
或$stateChangeSuccess
并相应地更改$scope.stylesheet
值。
app.controller('mainCtrl', function($scope, $state) {
$scope.stylesheet = "style.css";
$scope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams) {
if (toState.name === "login") {
$scope.stylesheet = "style2.css"
} else {
$scope.stylesheet = "style.css"
}
})
})
这是plnkr: http ://plnkr.co/edit/qR7FLDAyRTkFndMQyWod?p=preview
要了解有关ui-router API的更多信息,请访问: http : //angular-ui.github.io/ui-router/site/#/api/ui.router.state
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.