Я пытаюсь добавить post
класса в мой div #wrap
когда я нахожусь на странице /post
. Это то, что у меня есть:
$ 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]">
Когда on /post
, $scope.post
является true
. Если значение $scope.post
true
, добавьте post
класса в #wrap
Дело в том, что когда я $scope.post
в /post
, он не читает $scope.post
если я не использую ng-controller="postCtrl"
вручную.
Заранее спасибо.
- EDITED -
$scope.post
возвращает true
когда я использую {{post}}
on /post
. Тем не менее я не могу работать с ng-class
.
- EDITED -
Проблема все еще происходит из-за того, что #wrap
вышел из моего ng-view
. Поэтому я предполагаю, что я пытаюсь сделать, то, что я пытаюсь сделать, будет невозможно.
Я думаю, что проблема заключается в вашем HTML:
<div id="wrap" ng-class="{ className: post === true }">
должно сработать.
ng-класс работает следующим образом:
ng-class="{'classNameToApply': angularExpression}"
"ClassNameToApply" будет применяться, когда angularExpression
"угловое выражение" будет оценивать что-то правдоподобное.
Итак, в вашем случае, чтобы применить класс 'post', вы бы сделали <div id="wrap" ng-class="{'post': post}">
ng-controller="postCtrl"
вручную на #wrap
. Таким образом, все остальные страницы также добавят post
класса.
<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' }">
Пытаться
<div id="wrap" ng-class="{'post': post}">
Также не забудьте добавить ng-контроллер
ng-controller="postCtrl"
вручную на #wrap
. Таким образом, все остальные страницы также добавят post
класса.
Я предлагаю вам попробовать что-то вроде этого:
when('/post', {
templateUrl : 'views/post.php',
controller : 'postCtrl',
activetab: 'post'
})
и добавить:
<div id="wrap" ng-class="{post: $route.current.activetab == 'post'}"">