2013-11-25 3 views
1

У меня есть директива, которая открывает всплывающее окно "". Пользователь может нажать «Никогда не показывать этот выигрыш», в котором будет храниться файл cookie, и в следующий раз всплывающее окно не будет отображаться. Проблема в том, что я не хочу, чтобы директива всегда отображалась в html, если это не было необходимо. На данный момент я просто делаю что-то вродеКак динамически добавлять директивы в html?

$("#popups-container").html($compile("<my-popup></my-popup>")($scope)) 

но это не так.

Есть ли какой-нибудь «угловой способ»?

+0

В последнее время мне пришлось выполнять компиляцию '$ compile'. В этом случае я неоднократно добавлял и отделял элемент DOM, в зависимости от взаимодействия с пользователем, который является другим вариантом использования. Я предполагаю, что ваша директива проверяет наличие cookie - можете ли вы использовать это, чтобы скрыть свою директиву, возможно, используя шаблон 'ng-show' или' ng-hide' в шаблоне директивы? Это может помочь опубликовать некоторые из ваших директивных кодов. –

+1

'ng-show' и' ng-hide' не препятствуют компиляции самой директивы. Они просто добавляют: 'display: none'. –

+0

Правда, но я не предполагал, что это так. Я думал больше о том, как показывать или скрывать html в шаблоне директивы, в зависимости от настройки файла cookie, а не избегать компиляции. Для записи 'ng-switch' является хорошим предложением +1 –

ответ

1

Самый простой способ - использовать ng-switch. В зависимости от значения вы можете использовать ng-switch-when, чтобы динамически объявлять, какие части вашего html должны быть скомпилированы. Больше информации HERE.

+0

Я думаю, что это правильный ответ, у него не было возможности проверить его, но из документации кажется, что он делает то, что мне нужно. Благодаря! –

0

В вашей директиве 'myPopup', Проверьте, присутствует ли файл cookie или нет. если cookie присутствует do element.remove(); еще компилировать и возвращать свой html

+0

Выполнение этого по-прежнему будет компилировать директиву. –

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