Добавление дополнительного класса с помощью ng-class

0

Я использовал угловой генератор Yeoman для подкраски моего приложения, и теперь я работаю над конкретным видом.

Я создаю простую функцию ng-repeat, чтобы очистить свой html и не повторять одну и ту же разметку 4 раза.

Я создаю панели контента и хочу добавить класс, специфичный для контента, поэтому я могу настроить его с помощью Sass. Я попытался использовать ng-class но до сих пор мне не удалось заставить его работать.

Я новичок в AngularJS, я пробовал читать официальную документацию по ng-классу и эту запись, но до сих пор я не могу заставить ее работать. Наверное, для того, чтобы привыкнуть к Угловому, требуется некоторое время.

здесь мой взгляд:

<div data-ng-controller="LandingController">
    <div ng-repeat="panel in panels">
        <div class="panel-heading">
            {{ panel.title }}
        </div>
        <div class="panel-content" ng-class="{{panel.contentClass}}" data-ng-bind-html="panel.content">
        </div>
    </div>
</div>

и контроллер:

'use strict';

angular.module('angularApp')
    .controller('LandingController', function ($scope) {
        $scope.panels = [
            {
                title: 'lokacija',
                contentClass: 'location',
                content:'<p>Institut Jožef Stefan<br>Jamova 30<br>1000 Ljubljana</p><br><div class="map-container"></div>'
            },
            {
                title: 'kontakt',
                contentClass: 'location',
                content: ''
            },
            {
                title: 'delovni čas',
                contentClass: 'location',
                content: ''
            },
            {
                title: 'katalog',
                contentClass: 'location',
                content: ''
            }
        ];
    });
Теги:

2 ответа

3
Лучший ответ

ng-class работает по-разному, в зависимости от того, какой из трех типов выражает выражение:

  1. Если выражение оценивается в строке, строка должна быть одним или несколькими именами классов с разделителями-ограничителями. (это будет соответствовать вашему делу)

  2. Если выражение оценивается объектом, то для каждой пары значений ключа объекта с истинным значением соответствующий ключ используется как имя класса. (EX: ' ng-class="{'my-class': (true/false expression)}")

  3. Если выражение оценивает массив, каждый элемент массива должен быть либо строкой, как в типе 1, либо как объект, как в типе 2. Это означает, что вы можете смешивать строки и объекты вместе в массиве, чтобы дать вам больше контроля над тем, что Появляются классы CSS. См. Приведенный ниже код. (EX: ng-class="[style1, style2, style3]") ссылаются на документ ng-class, и вы получите больше информации.

поэтому вы можете напрямую использовать ng-class="panel.contentClass" это будет соответствовать первому элементу списка witch. If the expression evaluates to a string, the string should be one or more space-delimited class names. ,

вы можете просто изменить ng-class="{{panel.contentClass}}" на ng-class="panel.contentClass" потому что ng-class принимает expression не интерполированное значение.

<div class="panel-content" ng-class="panel.contentClass" data-ng-bind-html="panel.content">

DEMO

  • 0
    По какой-то причине инспектор показывает его как класс ng вместо обычного класса. Это было первое, что я попробовал, но, видимо, я неправильно вложил некоторые из моих css, и это не сработало
  • 0
    обычный класс добавлю в class :)
Показать ещё 4 комментария
1

Вы используете ng-класс неправильно. ng-class используется для добавления/удаления класса условно и динамически.

Вот полная документация по ng-классу.

Для ng-класса требуется json, в котором ключ является именем класса, а значение является условием. Если значение удовлетворяет, добавьте этот класс еще не.

для Ex.

<div class="panel-content" ng-class="{'my-class':panel.contentClass}" data-ng-bind-html="panel.content">

он добавляет my-class, если значение panel.contentClass истинно.

если вы берете имя класса из panel.contentClass, тогда лучше использовать атрибут класса вместо ng-класса. Вот ссылка.

Напр.

<div class="panel-content, {{panel.contentClass}}" data-ng-bind-html="panel.content">
  • 0
    Я полагаю, если вы не предоставите никаких условий, он будет применять этот класс к этому элементу постоянно
  • 0
    что вы имеете в виду, если вы не предоставляете никаких условий? это просто то же самое, что использование атрибута класса.
Показать ещё 3 комментария

Ещё вопросы

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