Я создаю настраиваемую угловую директиву для слайд-меню в меню, которое должно смотреть несколько атрибутов, и один из этих атрибутов должен быть двухсторонним к области основного контроллера (иногда). Однако иногда атрибут не добавляется разработчиком, поэтому его необходимо добавить автоматически и установить на значение по умолчанию (false). Таким образом, директива может быть использована следующим образом.Угловая пользовательская директива - двусторонняя привязка, которая всегда устанавливает атрибут true или false
<slide-menu position="right" is-open="menuIsOpen"></slide-menu>
или как это:
<slide-menu></slide-menu>
При использовании первого способа основной контроллер будет иметь возможность открыть и закрыть меню, изменив значение логического $ scope.menuIsOpen.
При использовании без подачи атрибута is-open он должен иметь значение по умолчанию false и, очевидно, используется внутренне и директивой toggle для детей.
Дополнительным осложнением является то, является ли атрибут предоставленным разработчиком или нет, он должен существовать в DOM. поэтому во втором примере выше директива по умолчанию установит значение false и добавит атрибут is-open = "false" в DOM?
Причина требующий является открытой = «ложь/истина» в DOM во все времена, что меню фактически управляется с помощью CSS tansitions, которые используют следующий селектор:
slide-menu[is-active="true"]{
// Slide the menu in using transforms/transitions
}
Там является jsfiddle здесь, который показывает, как далеко я получил.
http://jsfiddle.net/jonhobbs/gEPvE/
Очевидно, что это не работает, но он показывает, как я попытался установить по умолчанию, и как я пытался использовать @ и & на изолированном объеме в течение одного времени связывания (положение меню) и двунаправленное выражение для открытой переменной.
Мне явно далеко от достижения того, что мне нужно, но любой совет будет действительно оценен.
Спасибо Скотту, что почти работает именно так, как я хочу, чтобы он работал. Что-то я могу не понимать правильно, хотя, если я хочу использовать =? означает ли это, что атрибут должен быть привязан к чему-то в области видимости? Если бы я хотел, чтобы разработчик мог использовать position = "right", чтобы просто установить значение OR position = "position", чтобы связать его с $ scope.position, есть ли способ сделать это? в основном я хочу, чтобы разработчик мог просто установить атрибут или связать его с областью, что им больше подходит. – jonhobbs
Проверьте изменения и посмотрите, отвечает ли это на ваш вопрос. Благодарю. –