2014-04-23 38 views
1

目標:我想將$location.url()的值作爲我的<body>標記的屬性添加以添加頁面特定樣式。當路線改變時它應該自動改變。

預期的行爲:

  • 當你在頁面上首次土地,路由傳遞給<body>
  • 當路由發生變化,新的路線被傳遞到<body>

觀察到的行爲:

  • 當你在頁面上首次土地,路線成功地傳遞給<body>
  • 當路由變化,<body>路線保持不變

JS

app.controller('MainController', ['$scope', 'appData', '$location', '$rootScope', function ($scope, appData, $location, $rootScope) { 

$scope.location = $location.url(); 

// Unrelated code follows... 

HTML

<body data-page="{{ location }}" ng-controller="MainController"> 

現在,從這裏我希望能夠與[data-page="/login"] {}

+0

我不知道,如果這個問題是足夠的描述...讓我知道我是否應該創建一個Plunker以更好地說明我的問題 – Martin

+0

看看這個答案http://stackoverflow.com/a/22944345/949476 – dfsq

+0

它與我正在尋找的相似,但並不完全符合我的要求。我想根據傳遞的路線來做,而不一定是硬編碼的類名。否則,我會在每個控制器中執行'$ scope.className ='whatever-class'' – Martin

回答

1

我建議看$routeChangeSuccess事件樣式。在這裏你可以每次更新你的位置。

$rootScope.$on('$routeChangeSuccess', function(event, current, previous) { 
    $rootScope.location = $location.url(); 
}); 
+0

Boom perfect。我一直在玩'$ routeChangeSuccess',但沒有點擊。我沒有把參數放在'function()'中,因爲它們沒有被使用。 – Martin