2013-04-29 66 views
0

我無法在每次導航頁面更改時讓Angular將頁面的URL吐出到頁面類中。這是我到目前爲止有:使主體類成爲沒有第一個正斜槓的頁面的URL

$scope.currentPage = getCurrentPage; 

    var getCurrentPage = function() { 
    var login = 'login'; 
    var url = $location.url().substring(1); 
    if (url = null || url = undefined) { 
     return login; 
    } else { 
     return url; 
    } 
    }; 

我有這樣的內容包裝<div>

<div class="" ng-controller="AppCtrl" ng-class="currentPage + 'Page'"></div> 

任何鐵桿Angulars在那裏?請幫忙。

JP

回答

0

對於任何遇到此問題並希望獲得更詳細答案的人,請在此處參考!

鑑於:

<div class="" ng-controller="AppCtrl" class="currentPage"></div> 

在控制器:

$scope.$watch(function() {return $location.url();}, function() { 

    var getCurrentPage = function() { 
     var login = 'loginPage'; 
     var currentUrl = $location.url().substring(1); 
     if (currentUrl === '' || currentUrl === undefined) { 
     return login; 
     } else { 
     return currentUrl + 'Page'; 
     } 
    }; 

    $scope.currentPage = getCurrentPage(); 

    console.log($scope.currentPage); 

    }); 
0

有幾件事情要做不同:

我不認爲該函數實際上得到調用,因此:

$scope.currentPage = getCurrentPage(); 
$scope.currentPage += "Page"; // just keeping the concatenation out of the markup 

編輯:我想我關於上述說法錯誤。我在()時,將調用VS參考在這樣的情況下該功能將依然模糊......

此外,該行需要運營商的一些修飾:

if (url == null || url === undefined); 

而且,我不知道在這種情況下ng級是完全必要的。它通常用於評估表達式。我會簡單地使用:

<div class="" ng-controller="AppCtrl" class="{{currentPage}}"></div> 

希望別人可以驗證我對所有這些問題的,因爲我是相當新的JS和AngularJS。

+0

啊,我是完全錯誤的運營商,但我似乎得到一個返回爲「未定義」吧! – JohnRobertPett 2013-04-29 14:49:32

+0

此外,請務必在函數定義後放置函數調用(第1行)。 IOW,將第一行移到最下面。 – rGil 2013-04-29 15:22:38

+0

另一個棘手的部分 - 您應該將其包裝在$ watch中,或者該函數在頁面加載時只運行一次,並且currentPage不會使用新的url進行更新。 [這篇文章](http://stackoverflow.com/questions/11555181/angularjs-update-model-based-on-url)可能會有所幫助。 – rGil 2013-04-29 15:24:20

相關問題