针对不同页面背景的正文标记的角度ng样式?

时间:2016-05-18 05:00:49

标签: javascript css angularjs ngroute ng-style

我是angular and ngroute的新手,我正在尝试使用ng-style为网站的每个页面创建不同的图像背景。目前它设置了所有网站页面的背景,即使我有不同的控制器范围图像网址。

我的HTML是这样的:

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

我的剧本:  var angVenture = angular.module(&#39; angVenture&#39;,[&#39; ngRoute&#39;]);

// 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进行此操作会更好吗?

2 个答案:

答案 0 :(得分:1)

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

<强>控制器

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"
}

答案 1 :(得分:0)

试试这个

angVenture.controller('mainController', function($scope, $location) {
      // create a message to display in our view
        var classObject = {"/home":"../images/someimage1.jpg", "/about": "../images/someimage1.jpg" };
        $scope.message = 'home page';
        $scope.imageName = classObject[$location.path()];
    });

CSS

.main-view {

  "-webkit-background-size": "cover",
  "-moz-background-size": "cover",
  "-o-background-size": "cover",
  "background-size": "cover"
}

HTML

<body ng-controller="mainController" class="main-view" styel=""background": "url({{imageName}}) no-repeat center center fixed"">