如何通过AngularJS在$ scope之外添加/删除元素?

时间:2013-09-25 14:40:38

标签: angularjs angularjs-scope

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

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

2 个答案:

答案 0 :(得分:1)

听起来你的导航栏应该是它自己的指令,并且超出了那些控制器的范围。我已经通过让我的主模块拥有该指令并将其旋转并让我的控制器存在于注入父应用程序的单独模块中解决了类似的问题。

有条件地对其进行分类的最佳解决方案是查看路径参数或指令链接或控制器中的位置,并找出它们所在的控制器并设置反映它的范围变量。然后,在视图中,使用ng-class根据变量的值设置正确的类。

答案 1 :(得分: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。