0

我正在尝试学习 AngularJS,但遇到了一个难以解决的问题。

我有基于此模板的小型应用程序。

<!doctype html>
<html lang="en" ng-app="fff">
  <head>
    <meta charset="utf-8" />
  <head>

  <body class="{{bodyClass}}"> 
    <div ng-view></div>
    <script src="/static/js/all.js"></script>
  </body>
</html>

我想换bodyClassng-view这种情况下的最佳实践解决方案是什么?

4

3 回答 3

0

您可以通过将控制器放在那里来尝试使用路由更改

app.run(function($rootScope) {
   $rootScope.$on('$routeChangeSuccess', function(ev,data) {   
     if (data.$route && data.$route.controller)
       $rootScope.controller = data.$route.controller;
   })
});

并更改<body class="{{bodyClass}}"><body ng-class="controller">

检查http://plnkr.co/edit/fR6gSqeXbROl410tgzPJ?p=preview

于 2013-08-22T11:17:32.827 回答
0

最简单的方法是获取对象并在其上定义 bodyClass。就像是

$scope.appStyles={bodyClass:'default'}

此属性应在定义在ng-viewhtml 父级上的控制器上定义。

现在您将appStyle在所有范围内获得此对象ng-view,因为它们继承了父 $scope。这也意味着您可以在任何地方更改它

$scope.appStyles.bodyClass='newClass';

更好的方法是将这些设置移动到服务中并共享。

于 2013-08-22T12:07:07.513 回答
0

身体中使用的变量必须来自某个控制器。在 ng-view 中,您很可能还会有一个带有控制器的页面。该控制器现在是“body”控制器的子级。这意味着您可以从“子”控制器访问父变量。

请阅读:范围。这是一本关于范围的非常非常好的读物。我什至认为这是必读的。

于 2013-08-22T11:31:14.730 回答