2014-03-15 3 views
0

У меня есть класс с именем late, что я хотел бы применить условно:AngularJS использовать возвращается логическое значение из директивы

<div ng-class="late: isLate"></div> 

У меня есть директиву под названием isLate, который выполняет вычисления и возвращает логическое значение. Каков правильный способ связать эти два? Я искал документацию по директиве и не нашел ничего, что делает это. Может быть, использование директив - это неправильный способ сделать это?

ответ

3

При первом перемещении расчета из директивы размаху:

$scope.isLate = function() { 
    // make calculations here and return bool value 
} 

А затем передать объект нг-класс директиве:

<div ng-class="{late: isLate()}"></div> 

Для каждого ключа пары значений объекта с truthy значение соответствующего ключа используется как имя класса. (из документов ngClass)

+0

Это работает. Мое впечатление было, что директивы лучше, чем '' '$ scope.function()' '', но это работает. – nathancahill

0

Для ng-класса вам необходимо предоставить объект, который используется в качестве карты с именем класса, сопоставленным с некоторым выражением, которое вычисляется в булевом состоянии. (существуют другие варианты использования, но это ближе всего к тому, что вы показываете).

http://docs.angularjs.org/api/ng/directive/ngClass

так что-то подобное будет работать при условии, что isLate был булево на вашем области контроллера

<div ng-class="{'late':isLate}"></div> 

Я не знаю, что директива является правильным подходом здесь, так как они, как правило, используются для добавления поведения и манипуляций с DOM. Вернее, я не думаю, что использование директивы в ng-классе является правильным подходом, хотя, возможно, просто использование настраиваемой директивы, которую вы используете как атрибут элемента DOM, может работать.

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