javascript - 不同页面背景的 body 标签上的 Angular ng-style?

标签 javascript css angularjs ngroute ng-style

我是 angular 和 ngroute 的新手,我正在尝试使用 ng-style 为网站的每个页面设置不同的图像背景。目前它设置所有站点页面的背景,即使我有不同的 Controller 范围图像 url。

我的html是这样的:

<body ng-controller="mainController" ng-style="bodyStyles">
...
   <div id="main">
      <div ng-view></div>
</body>

我的脚本: var angVenture = angular.module('angVenture', ['ngRoute']);

// configure routes
angVenture.config(function($routeProvider, $locationProvider) {
    $routeProvider

        // route for the index page
        .when('/home', {
            templateUrl : 'pages/home.html',
            controller  : 'mainController'
        })

        // route for the about page
        .when('/about', {
            templateUrl : 'pages/about.html',
            controller  : 'aboutController'
        })

 ... more routes.....      

// create the controller
angVenture.controller('mainController', function($scope) {
    // create a message to display in our view
    $scope.message = 'home page';
    $scope.bodyStyles ={
        "background": "url(../images/someimage.jpg) no-repeat center center fixed", 
        "-webkit-background-size": "cover",
        "-moz-background-size": "cover",
        "-o-background-size": "cover",
        "background-size": "cover"
    }
});

angVenture.controller('aboutController', function($scope) {
    $scope.message = 'another page.';
});

....more controllers for different pages...

我最好还是使用 ui-router 来做这件事吗?

最佳答案

更好的策略是不要在 JavaScript 中执行此操作,而是将所有样式移至您的 css。您可以通过使用 $scope 变量添加类并在 css 中定义这些类来实现:

Controller

angVenture.controller('mainController', function($scope) {
  // create a message to display in our view
  $scope.message = 'home page';
  $scope.bodyClass = 'main-view';
});

查看

<body ng-controller="mainController" ng-class="bodyClass">

CSS

.main-view {
  "background": "url(../images/someimage.jpg) no-repeat center center fixed", 
  "-webkit-background-size": "cover",
  "-moz-background-size": "cover",
  "-o-background-size": "cover",
  "background-size": "cover"
}

关于javascript - 不同页面背景的 body 标签上的 Angular ng-style?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37290659/

相关文章:

javascript - 带过滤器的 CSS Transition 会破坏剪切路径

javascript - Django Rest 框架正在从数据库中返回 'u 前缀到 Angular

javascript - 在 Angular JS 中如果条件匹配则添加类

滚动到末尾的 Javascript

jquery - 脚本代码在 firefox 和 internet explorer 中运行良好,但在 google chrome 中运行不正常

javascript - 检查数组键是否等于某个值 JavaScript

html - 页脚下的白色条纹

node.js - AngularJS 中的 ExpressJS 变量 - Mean Stack

javascript - 如何在 javascript 中创建一个监视数组的自定义事件?

javascript - 如何比较 ComponentDidUpdate 中与 Redux 连接的大型数据结构中的 props