2016-01-11 88 views
0

我試圖將類post添加到我的div #wrap當我在頁面/post上。這就是我:Angular.js在某些頁面中添加類到元素

$ routeProvider

when('/post', { 
    templateUrl : 'views/post.php', 
    controller : 'postCtrl' 
}) 

控制器

carolvaladares.controller('postCtrl', function($scope) { 
    $scope.post = true; 
}); 

HTML

<div id="wrap" ng-class="{true: 'post'}[post]"> 

/post$scope.posttrue。如果$scope.posttrue,類post添加到#wrap

的事情是,當我去/post,它不讀取$scope.post,除非我手動使用ng-controller="postCtrl"

在此先感謝。

- 編輯 -

$scope.post回報true當我/post使用{{post}}。我仍然無法使用ng-class

- 編輯 -

問題仍然發生,因爲#wrap是我的ng-view的。所以我想我想做什麼,我試圖做的事情是不可能的。

+0

當您導航到/ post時,您的控制器是否加載,我希望您使用的是ng-view – Thalaivar

+0

是的。我使用的是ng-view,當我導航到/ post時,控制器會加載。我使用簡單的$ scope.message和{{message}}對其進行了測試以確認它。 –

+0

我的答案是否正常工作...您是否收到任何控制檯錯誤消息? – Thalaivar

回答

0

嘗試

<div id="wrap" ng-class="{'post': post}">

另外不要忘記添加NG控制器

+0

如果我在'#wrap'上手動使用'ng-controller =「postCtrl」',它就可以工作。這樣,所有其他頁面也會添加「post」類。 –

1

我認爲這個問題是你的HTML:

<div id="wrap" ng-class="{ className: post === true }"> 

應該工作。

0

納克級是這樣工作的:當angularExpression評估的東西truthy

ng-class="{'classNameToApply': angularExpression}"

的 'classNameToApply' 將被應用。

你的情況

因此,應用類「後」,你會怎麼做 <div id="wrap" ng-class="{'post': post}">

+0

如果我在'#wrap'上手動使用'ng-controller =「postCtrl」',它就可以工作。這樣,所有其他頁面也會添加「post」類。 –

0
<div id="wrap" ng-class="{true: 'post'}[post]"> 

你已經給了ng-class應該工作的聲明,你可以在你的post變量更改爲別的東西檢查其工作象下面這樣:

<div id="wrap" ng-class="{true: 'post'}[someValue]"> 

除此之外,還有其他的解決方案低於你可以嘗試:

SOL1:

<div id="wrap" ng-class="{'post': post}"> 

SOL2

<div id="wrap" ng-class="post ? 'post' : 'somethingelse' }"> 
0

我會建議你嘗試是這樣的:

when('/post', { 
    templateUrl : 'views/post.php', 
    controller : 'postCtrl', 
    activetab: 'post' 
}) 

,並添加:

<div id="wrap" ng-class="{post: $route.current.activetab == 'post'}"">

相關問題