2013-08-22 41 views
0

我正在尝试学习AngularJS,并遇到了一个难以解决的问题。从ng-view中设置一个变量

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

<!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。这种情况下的最佳实践解决方案是什么?

+0

使用ng-class指令。我认为这会有所帮助。 – BKM

回答

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

+0

如何更改模板中的变量? – Cemo

+0

您是否想要在应用中将此{{bodyClass}}更改为值,或者是否想更改{{bodyClass}}中的bodyClass? – BKM

+0

我想更改ng视图模板中的bodyClass。对于登录页面我需要登录页面类,对于注册页面我需要注册页面样式。 – Cemo

0

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

请阅读下面的内容:Scopes。这是关于示波器的非常非常好的阅读。我甚至认为这是必读。

0

最简单的方法是取对象并在其上定义bodyClass。喜欢的东西

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

此属性应在上ng-view HTML的父定义的控制器来定义。

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

$scope.appStyles.bodyClass='newClass';

一个更好的方法将这些设置移动到服务和共享。

相关问题