使用angularjs更改主体背景颜色

使用angularjs更改主体背景颜色,第1张

使用angularjs更改主体背景颜色

为了消除样式,数据,内容等方面的动态变化,通常很实际的做法是创建另一个包含接口(自定义提供程序)的角度模块,该接口可让您在配置级别之前和之后访问这些更改。这是一个小插曲,可以提供我下面将要讨论的内容的观点。

为此,我创建了一个带有

provider
RouteData 的小模块(route-data.js),该模块公开了两个功能配置:

applyConfig()
-分配要在RouteData服务中访问的设置
hookToRootScope()
-将RouteData服务挂接在其中,
$rootScope
从而使它可用于所有要创建的子作用域和整个应用程序。

RouteData提供程序具有一项

RouteData()
服务,该服务提供对方法的访问,这些方法用于设置和获取
RouteData
将在
$routeProvider
配置中提供的设置。

(如果您不熟悉提供者和服务,请在此处了解更多信息)

(如果您不熟悉

config()
run()
方法,可以在此处阅读更多内容)

route-data.js

angular.module('RouteData', []).provider('RouteData', function () {  var settings = {};  var hookToRootScope = false;  this.applyConfig = function(newSettings) {    settings = newSettings;  };  this.hookToRootScope = function(enableRootScopeHook) {    hookToRootScope = enableRootScopeHook;  };  function RouteData() {    this.set = function(index, value) {      settings[index] = value;    };    this.get = function(index) {      if(settings.hasOwnProperty(index)) {        return settings[index];      } else {        console.log('Routedata: Attempt to access a propery that has not been set');      }    };    this.isHookedToRootSope = function() {      return hookToRootScope;    };  }  this.$get = function() {      return new RouteData();  };}).run(['$location', '$rootScope', 'RouteData', function($location, $rootScope, RouteData) {  if(RouteData.isHookedToRootSope()) {    $rootScope.RouteData = RouteData;  }  $rootScope.$on('$routeChangeStart', function(event, current, previous) {    var route = current.$$route;    if(typeof(route) !== 'undefined' && typeof(route['RouteData']) !== 'undefined') {      var data = route['RouteData'];      for(var index in data)        RouteData.set(index, data[index]);    }   });}]);

下面展示了如何通过在配置级别注入RouteDataProvider使用的RouteData模块上方,并应用默认配置中,如脚本

bodyStyle
通过
RouteDataProvider.applyConfig()
,你还可以添加应用程序完全运行之前更多的设置。通过设置
RouteDataProvider.hookToRootScope()
为true
将其挂接到$ rootScope中。最后,附加数据,
RouteData
例如

Routedata: {      bodyStyle: {        'background-color': 'green'      }    }

由$ routeProvider发送并由

run()
RouteData模块中定义的方法处理,该方法初始化将在应用程序中访问的RouteData服务的设置。

script.js

angular.module('app', ['ngRoute', 'RouteData']).config(['$routeProvider', 'RouteDataProvider', function($routeProvider, RouteDataProvider) {  RouteDataProvider.applyConfig({    bodyStyle: {      'background-color': 'white'    }  });  RouteDataProvider.hookToRootScope(true);  $routeProvider.when('/landing', {    Routedata: {      bodyStyle: {        'background-color': 'green'      }    },    templateUrl: 'landing.html',    controller: 'LandingController'    }).when('/login', {    Routedata: {     bodyStyle: {         'background-color': 'gray',         padding: '10px',         border: '5px solid black',         'border-radius': '1px solid black'     }    },    templateUrl: 'login.html',    controller: 'LoginController'  }).otherwise({    redirectTo: '/landing'  });}]).controller('LoginController', ['$scope', function($scope) {}]).controller('LandingController', ['$scope', function($scope) {}]);

因此,要添加到索引页面或任何其他页面中的最后一段代码将是这样的。

一部分

index.html

<body ng->     <a href="#/landing">Landing</a> |     <a href="#/login">Login</a>    <div ng-view></div></body>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5662437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存