Ответы пользователя по тегу Angular
  • Как на Angular сделать динамическое меню?

    @Dzorogh
    Если вы спрашиваете про отрисовку в html, то вам поможет ng-include с шаблоном. Шаблон одного пункта можно хранить прямо в вашем view в скрипте.
    <script type="text/ng-template" id="category.html">
       код элемента
    </script>

    В нужном месте (где будет само дерево) пишем:
    <ul>
          <li ng:repeat="category in categories" ng:include="'category.html'"></li>
    </ul>

    categories - наш основной массив с деревом.
    "'category.html'" - кавычек должно быть двое, чтобы вернуть строку.

    Внутри кода элемента (в шаблоне, то есть) надо будет соответственно написать:
    ID: {{category.id}}, 
    NAME: {{category.name}}
    <ul ng:if="category.children">
            <li ng:repeat="category in $parent.category.children" ng:include="'category.html'"></li>
           <!-- $parent нужен из-за ng-if -->
    </ul>


    По поводу структуры все понятно - к каждому элементу добавляется массиив с дочерними (children) элементами. При клике на элемент будет идти загрузка, данные добавятся в изначальный массив, он обновится, соответственно обновится и html-дерево. Если, конечно, вы будете подгружать данные нативными методами, запускающими перерисовку, или используете ($scope.$apply(fn))

    Я в своих проектах делал именно так (правда, без подзагрузки пунктов - деревья были не более 30 элементов). Если есть способ лучше - буду рад о нем узнать.
    Ответ написан
    1 комментарий