我正在努力学习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>我想在ng-view中更改bodyClass。在这种情况下,最佳实践解决方案是什么?
发布于 2013-08-22 19:17:33
您可以通过将控制器放在那里,使用路由更改来尝试这一点
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-22 19:31:15
在你的身体中使用的变量必须来自某个控制器。在ng-view中,您很可能还有一个带有控制器的页面。这个控制器现在是“body”控制器的子控件。这意味着你可以从你的“子”控制器访问父变量。
请阅读这个:Scopes。这是一本关于范围的非常非常好的读物。我甚至认为这是一本必读的书。
发布于 2013-08-22 20:07:08
最简单的方法是获取object并在其上定义bodyClass。就像这样
$scope.appStyles={bodyClass:'default'}
此属性应在ng-view html的父级上定义的控制器上定义。
现在,您将在所有ng-view作用域中获得此appStyle对象,因为它们继承了父$scope。这也意味着你可以在任何地方改变它,比如
$scope.appStyles.bodyClass='newClass';
一种更好的方法是将这些设置移动到服务中并共享。
https://stackoverflow.com/questions/18378807
复制相似问题