Angular.js добавляет класс к элементу, когда на какой-то странице

0

Я пытаюсь добавить 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. Поэтому я предполагаю, что я пытаюсь сделать, то, что я пытаюсь сделать, будет невозможно.

  • 0
    Ваш контроллер загружается, когда вы переходите к / post, и я надеюсь, что вы используете ng-view
  • 0
    Да. Я использую ng-view, и контроллер загружается при переходе к / post. Я проверил это, используя простой $ scope.message и {{message}}, чтобы подтвердить это.
Показать ещё 5 комментариев
Теги:

5 ответов

1

Я думаю, что проблема заключается в вашем HTML:

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

должно сработать.

0

ng-класс работает следующим образом:

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

"ClassNameToApply" будет применяться, когда angularExpression "угловое выражение" будет оценивать что-то правдоподобное.

Итак, в вашем случае, чтобы применить класс 'post', вы бы сделали <div id="wrap" ng-class="{'post': post}">

  • 0
    Это работает, если я использую ng-controller="postCtrl" вручную на #wrap . Таким образом, все остальные страницы также добавят 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

Пытаться

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

Также не забудьте добавить ng-контроллер

  • 0
    Это работает, если я использую ng-controller="postCtrl" вручную на #wrap . Таким образом, все остальные страницы также добавят post класса.
0

Я предлагаю вам попробовать что-то вроде этого:

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

и добавить:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню