Динамическое добавление директив в AngularJS

Добрый день!

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

Имеем одностраничное приложение, с левой стороны — меню, с правой — контейнер для табов.
Необходимо, при клике пользователем на меню — справа добавлять таб с гридом.
пример как это выглядит:
image

Сделал директиву для грида — <gird></grid>, если прописать ее в html-коде, то она работает.

Но как правильно реализовать ее динамическое добавление при клике не очень понимаю.

Как черновой вариант сделал через $compile, что то вроде
var el = $compile('<grid></grid>'); $('#container').append(el)

Но не уверен что это верный способ реализации данной функциональности.

Спасибо!
  • Вопрос задан
  • 4659 просмотров
Пригласить эксперта
Ответы на вопрос 3
@avorobiev
Что-то ваш код похож на jQuery-стиль. На AngularJS все по другому…
Пункты меню с левой панели должны быть ссылками, с разными URL. Соответвенно при клике на них через роутинг должны подгружаться соответствующие темплейты и наполняться данными. Посмотрите примеры на этот счет в интернете.
Т.е. ключевой ответ на ваш вопрос, насколько я его понял: роутинг + подгружаемые темплейты.
Ответ написан
EugeneOZ
@EugeneOZ
Если табы справа должны добавляться — добавьте их все заранее и включайте по ng-show.
Если слева именно переключатель табов — либо ng-switch, либо ng-view с роутингом. Но ng-view на странице может быть только один, а я там вижу два каталога разных табов.
Ответ написан
mrakolice
@mrakolice
Главное преимущество AngularJS — связь данных в JavaScript'e с их репликацией на DOM-элементы.
Мне кажется, Вам необходима следующая схема:
  1. Завести массив вкладок в контроллере и привязать его к scope
  2. Для правой стороны написать ng-repeat по этим вкладкам
  3. Прикрепить событие (ng-click), чтобы по нажатию на таб подгружалась необходимая вьюшка

Для вьюшки использовать ng-include.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы