2014-09-16 2 views
1

Я замечаю, что когда я смешиваю ng-class с class + expression (class="something-{{ stuff }}"), который не может быть установлен, ng-class не скомпилируется.(AngularJS) динамически устанавливает класс CSS по привязке данных

Пример:

Это будет работать нормально (JSFIDDLE)

<div 
    ng-controller="MainCtrl" 
    ng-class="(data.size > 10) ? 'font-large' : 'font-small'" 
    > 
    Lorem ipsum dolor sit amet 

Но когда я использую NG-класс & класс с выражением (который не существует на объем) он не будет работать, он не будет запускаться/компилироваться ng-class. (JSFIDDLE):

<div 
    ng-controller="MainCtrl" 
    class="just-a-class color-{{ data.color }}" 
    ng-class="(data.size > 10) ? 'font-large' : 'font-small'" 
    > 
    Lorem ipsum dolor sit amet. 
</div> 

Есть ли способ использовать как ng-class и class with expression или что обходной путь? Любые предложения очень ценятся.

+0

второй jsfiddle работает, что мне здесь не хватает? –

+0

Ваш второй jsfiddle отлично подходит для меня. Классы divs в Chrome версии 37.0.2062.120 (64-разрядная версия): 'just-a-class color-red font-small' – kasoban

+0

Я сделал утилизацию и, похоже, работает нормально сейчас, я пытаюсь воспроизвести еще один время. – Iladarsda

ответ

1

Если вам нужно добавить класс со связыванием данных или условием, используйте ng-class.

от angularjs нг-игровая класса doc:

директива ngClass позволяет динамически устанавливать классы CSS на HTML-элемента с помощью привязки данных выражение, представляющее собой все классы, которые будут добавлены.

Эта версия работает хорошо (jsfiddle)

Он использует только нг-класс, с вне регулярного класса

<div ng-controller="MainCtrl" 
    ng-class="{'font-large' : (data.size >= 10), 
       'font-small' : (data.size < 10), 
       'color-{{ data.nothing }}' : color.nothing }"> 

    Lorem ipsum dolor sit amet 
</div> 

этот путь нг-класс будет обрабатывать «цвет - {{ data.nothing}} 'только если данные.необходимо true

+0

Я думаю, что проблемы в том, что ng-класс не компилируется, когда 'data.nothing' не существует. https://github.com/angular/angular.js/issues/9109 – Iladarsda

+0

Я отредактировал ответ, попробуйте скрипку –

+0

Очень хороший пример, я могу перенести все мои выражения класса в 'ng-class'. Что здесь лучше всего? – Iladarsda

Смежные вопросы