0

我有一个名为.nav-bar. 我想从另一个拥有它自己的 Angular 控制器向它添加一个类$scope。这样的事情可能吗?

我有一个导航栏,需要加载几个控制器之一。根据加载它的控制器/视图,它必须有条件地应用一个类。

4

2 回答 2

1

这是一个如何从任何地方更改 body 元素上的类的示例。创建一个顶层AppCtrl并将其放在 html 元素上,如下所示:

<html lang="en" ng-app="myApp" ng-controller="AppCtrl as appCtrl">
    <body class="{{ appCtrl.appService.cssClass }}"></body>
</html>

myModule.controller('AppCtrl', ['appService', function(appService) {
    this.appService = appService;
}]);

然后将AppService其中的一个注入到控制器中,并在控制器AppCtrl中分配服务。this.appService该服务可以包含一个属性以包含您要分配的类。现在,您可以通过注入 appService 从任何地方分配类。你可以在任何元素上做类似的事情,它不必在 html/body 元素上。

我认为“Ctrl as ctrl”语法至少需要 Angular 1.1.5。

于 2013-09-25T14:57:30.627 回答
1

听起来您的导航栏应该是它自己的指令并且位于这些控制器的范围之外。我通过让我的主模块拥有该指令并启动它并让我的控制器存在于注入到父应用程序中的单独模块中来解决了类似的问题。

对其进行条件分类的最佳解决方案是查看路由参数或指令链接或控制器中的位置,并确定它们在哪个控制器上,并设置一个反映它的范围变量。然后,在视图中,使用 ng-class 根据变量的值设置适当的类。

于 2013-09-25T14:49:11.283 回答