Я использовал угловой генератор 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: ''
}
];
});
ng-class
работает по-разному, в зависимости от того, какой из трех типов выражает выражение:
Если выражение оценивается в строке, строка должна быть одним или несколькими именами классов с разделителями-ограничителями. (это будет соответствовать вашему делу)
Если выражение оценивается объектом, то для каждой пары значений ключа объекта с истинным значением соответствующий ключ используется как имя класса. (EX: ' ng-class="{'my-class': (true/false expression)}"
)
Если выражение оценивает массив, каждый элемент массива должен быть либо строкой, как в типе 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">
Вы используете 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">
class
:)