我只想在用户访问contact.html
我的 AngularJS 应用程序/站点上的视图时加载特定的 CSS 文件。我发现这个答案对我来说几乎是有意义的如何在 AngularJS 中包含视图/部分特定样式charlietfl 接受的答案是:
可以将新样式表附加到
$routeProvider
. 为简单起见,我使用字符串,但也可以创建新的链接元素,或者为样式表创建服务/* check if already exists first - note ID used on link element*/ /* could also track within scope object*/ if( !angular.element('link#myViewName').length){ angular.element('head').append('<link id="myViewName" href="myViewName.css" rel="stylesheet">'); }
在页面中预加载的最大好处是任何背景图像都已经存在,并且更少的可能性
FOUC
问题是我不知道在哪里$routeProvider
添加代码。charlietfl 在评论中提到了将其放在哪里
如果尚未调用路线的时间,则不会。可以将此代码放在 routeProvider 内的控制器回调中,或者可能在可能更快触发的解析回调中
我已经修改了我$routeProvider
的建议。我resolve
在下面的对象中添加了一个.when('/contact'
. 这是我的代码
angular.module('maxmythicApp', ['ngResponsiveImages'])
.config(function ($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix = '!';
$routeProvider
.when('/', {
templateUrl: '/views/design.html',
controller: 'MainCtrl'
})
.when('/design', {
templateUrl: '/views/design.html',
controller: 'MainCtrl'
})
.when('/about', {
templateUrl: '/views/about.html',
controller: 'MainCtrl'
})
.when('/contact', {
templateUrl: '/views/contact.html',
controller: 'MainCtrl',
resolve:
if( !angular.element('link#myViewName').length){
angular.element('head').append('<link id="myViewName" href="myViewName.css" rel="stylesheet">');
}
})
.otherwise({
redirectTo: '/'
});
});
这行得通吗?