2013-09-25 57 views
0

我有一個名爲.nav-bar的DOM元素。我想從另一個具有自己的$scope的Angular控制器添加一個類。這樣的事情可能嗎?如何通過AngularJS添加/刪除類到元素中?

我有一個導航欄,需要加載幾個控制器之一。根據加載它的控制器/視圖,它必須有條件地應用一個類。

+0

你能否更詳細地解釋你想要做什麼(以及爲什麼)。角度解決方案很少涉及從控制器添加類。 –

+0

你可以通過指令 – Cherniv

+0

@MikeRobinson通過jQuery/jqLit​​e完成,在問題 – Shamoon

回答

1

這聽起來像你的導航欄應該是它自己的指令,並超出了這些控制器的範圍。我已經解決了一個類似的問題,讓我的主模塊擁有該指令並將其旋轉起來,讓我的控制器存在於注入父應用程序的單獨模塊中。

對條件進行分類的最佳解決方案是查看路徑參數或指令鏈接或控制器中的位置,並確定它們位於哪個控制器上並設置反映它的範圍變量。然後,在視圖中,使用ng-class根據變量的值設置適當的類。

+0

中澄清仍在學習 - 我將如何使用'directive'處理? – Shamoon

+0

我擴大了我的答案,爲您提供了更多方向。 – Fourth

+0

也許一些代碼示例@Fourth? – Shamoon

1

下面是如何從任何地方更改正文元素的類的示例。創建一個頂級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 ctrl」語法至少需要Angular 1.1.5。

相關問題