2013-08-22 72 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';

一個更好的方法將這些設置移動到服務和共享。

相關問題