Как динамически добавлять или удалять узлы при извлечении детей с пульта - PullRequest
0 голосов
/ 29 апреля 2019
   <kendo-treeview #departmentTree [nodes]="departmentList" textField="EnName" kendoTreeViewExpandable
                  kendoTreeViewSelectable kendoTreeViewHierarchyBinding [hasChildren]="hasChildren"
                  [children]="fetchChildren" (nodeClick)="onNodeClick($event)">
                  <ng-template kendoTreeViewNodeTemplate let-dataItem>
                    <span class="tree-node">
                      {{dataItem.EnName}} </span>
                  </ng-template>
                </kendo-treeview>
  public fetchChildren = (node: any): Observable < any[] > => {
    return this.httpService.getDepartment(node.DepartmentId);
  }

Я хочу вставить новые узлы в существующее дерево без обновления. (как вставить в существующий массив) я пытаюсь вставить дочерние узлы в выбранный dataItem this.selectedNode.items.push(newItem) я не нашел никакой документации для этого

1 Ответ

0 голосов
/ 29 апреля 2019

я хочу вставить новые узлы в существующее древовидное представление

Вся идея интерфейсных сред, в том числе Angular, состоит в том, чтобы изменить данные и позволить платформе изменить представление, используяпредоставленный вами декларативный шаблон (как @Component#template или @Component#templateUrl).

без обновления

Все в одностраничном приложении выполняется без обновления.В этом весь смысл, и именно поэтому они называются одностраничными приложениями: нет понятия традиционных страниц, которые браузер выбирает с сервера: все изменения выполняются через клиентский JavaScript-код, включая «page »изменения, сделанные реализацией маршрутизатора на JavaScript (общий выбор @angular/router).

(например, добавление в существующий массив)

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

Я пытаюсь вставить дочерние узлы в выбранный dataItem this.selectedNode.items.push (newItem)

Тогда что-то не так.Попробуйте напечатать весь массив в виде JSON на странице, чтобы увидеть, меняется ли он: {{ selectedNode.items | json }}.


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

...