如何在 AngularJS 中包含特定于视图的样式
正确管理各种视图的样式表在 AngularJS 应用程序中至关重要。传统上,这是通过将 放置在元素直接位于每个视图的 HTML 中。然而,尽管浏览器支持,但这种方法被认为是不好的做法,因为它可能会导致性能问题和可维护性挑战。
首选方法
首选方法是动态加载仅当导航到特定视图时才使用样式表。这可确保最佳性能并防止出现无样式内容。实现此目标的方法如下:
1.为 创建自定义指令元素
该指令将负责动态添加和删除特定于页面的 。
元素部分。app.directive('head', ['$rootScope', '$compile', function($rootScope, $compile){ return { restrict: 'E', link: function(scope, elem){ var html = '<link rel="stylesheet" ng-repeat="(routeCtrl, cssUrl) in routeStyles" ng-href="{{cssUrl}}" />'; elem.append($compile(html)(scope)); scope.routeStyles = {}; $rootScope.$on('$routeChangeStart', function (e, next, current) { if(current && current.$$route && current.$$route.css){ if(!angular.isArray(current.$$route.css)){ current.$$route.css = [current.$$route.css]; } angular.forEach(current.$$route.css, function(sheet){ delete scope.routeStyles[sheet]; }); } if(next && next.$$route && next.$$route.css){ if(!angular.isArray(next.$$route.css)){ next.$$route.css = [next.$$route.css]; } angular.forEach(next.$$route.css, function(sheet){ scope.routeStyles[sheet] = sheet; }); } }); } }; }]);
2。在 $routeProvider
中指定样式表关联,这涉及到向每个路由配置对象添加一个 css 属性。该值可以是表示样式表路径的单个字符串,也可以是多个样式表的字符串数组。
app.config(['$routeProvider', function($routeProvider){ $routeProvider .when('/some/route/1', { templateUrl: 'partials/partial1.html', controller: 'Partial1Ctrl', css: 'css/partial1.css' }) .when('/some/route/2', { templateUrl: 'partials/partial2.html', controller: 'Partial2Ctrl' }) .when('/some/route/3', { templateUrl: 'partials/partial3.html', controller: 'Partial3Ctrl', css: ['css/partial3_1.css','css/partial3_2.css'] }) }]);
此设置将动态地将指定的样式表加载到
中。仅当导航到相应视图时才使用元素,确保最佳性能和一致的用户体验。以上是如何在 AngularJS 中动态管理特定于视图的样式表?的详细内容。更多信息请关注PHP中文网其他相关文章!