2014-01-21 6 views
1

Я определил настраиваемую директиву checkbox и хотел бы получить доступ к атрибуту из другого атрибута.AngularJS: атрибут директивы Access из другого атрибута

Пожалуйста, обратите внимание на disabled и ng-class атрибуты в следующем примере:

<checkbox ng-model="isChecked" 
      disabled="<some angular expression>" 
      ng-class="{'fresh': isChecked && !disabled}"/> 

Кроме того, сфера применения директивы выглядит следующим образом:

scope: { 
    ngModel: "=", 
    disabled: "=", 
} 

Возможно ли это?

EDIT:

Чтобы сделать мой вопрос более ясно: В this fiddle я иллюстрировать, как я хочу, чтобы повторно использовать атрибут disabled в моем атрибуте ng-class.

В скрипке, это никогда не будет работать, потому что disabled в атрибуте ng-class всегда ложно (это не атрибут отключен флажок (или отключен от объема директивы), а скорее «отключен» от тока объем).

+0

в шаблоне u можете получить доступ к тексту, например {{arrributenename}}. В функции ссылок вы можете получить к нему доступ с помощью scope.attributename. для использования атрибута используйте «@» не «=» – surendar

+0

Если это так, не должен ли приведенный выше пример работать просто хорошо? –

+0

Нет проблем с доступом к значению атрибута через область видимости. Вот пример: http://jsfiddle.net/eFN7Q/1/ – Pythonic

ответ

0

Как @surendar упоминается в directive оценки экспрессии может быть возможно через ngAttr attribute bindings означает

scope: { 
    ngModel: "=", 
    disabled: "@" 
} 

ng-class будет оцениваться со значением модели isChecked

Редактировать

кажется, что вы пытаетесь сделать невозможно!

disabled="<some angular expression>" 

Поскольку disabled является attribute для директивы и то же время оно model для внутреннего элемента директивы.

ng-class="{'fresh': isChecked && !disabled}" 

здесь ng-class ожидают isCheckeddisabled и модельно собственности. Вы можете сделать что-то еще, например

ng-class="{'fresh': isChecked && (expression)}" // you can put expression instead of disabled 

в противном случае вам нужна ссылка/контроллер.

+0

Я не вижу, как это может решить мою проблему ... Я знаю, что такое привязка атрибута, но я хочу сделать логику для ngClass в шаблоне, а не в функции link/controller. –

+0

Благодарим за редактирование. На данный момент я делаю то, что вы сказали, помещая выражение 2 раза в код, но я подумал, что есть более красивый способ, и повторное использование атрибута disable показалось одним из решений. –

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