首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ng-view设置变量

从ng-view设置变量
EN

Stack Overflow用户
提问于 2013-08-22 19:11:29
回答 3查看 218关注 0票数 0

我正在努力学习AngularJS,我遇到了一个问题,我很难解决它。

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

代码语言:javascript
复制
<!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。在这种情况下,最佳实践解决方案是什么?

EN

回答 3

Stack Overflow用户

发布于 2013-08-22 19:17:33

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-08-22 19:31:15

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

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

票数 0
EN

Stack Overflow用户

发布于 2013-08-22 20:07:08

最简单的方法是获取object并在其上定义bodyClass。就像这样

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

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

现在,您将在所有ng-view作用域中获得此appStyle对象,因为它们继承了父$scope。这也意味着你可以在任何地方改变它,比如

$scope.appStyles.bodyClass='newClass';

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18378807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档