<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)
我没有找到任何这方面的文档
我想在现有的树视图中插入新节点
前端框架(包括Angular)背后的整个想法是使用您提供的声明性模板(如@Component#template
或@Component#templateUrl
)更改数据并让框架更改视图。
没有刷新
单页应用程序中的所有内容都无需刷新即可完成。这就是重点,这也就是为什么它们被称为单页面应用程序:浏览器从服务器获取传统页面的概念:所有更改都是通过客户端站点JavaScript完成的,包括“页面”所做的更改。路由器的JavaScript实现(常见的选择是@angular/router
)。
(比如推入现有阵列)
这正是你必须要做的。 Angular将处理更新视图,除非组件构建不正确或经过大量优化,因此需要手动更改检测周期触发器,但您可能知道这些情况何时出现,所以我认为您不必担心。
我尝试将子节点推入选定的dataItem this.selectedNode.items.push(newItem)
还有别的错了。尝试将整个数组作为JSON打印到页面,看看它是否在变化:{{ selectedNode.items | json }}
。
我将更新答案,具体原因是当您添加缺少的详细信息时,您没有看到视图已更改。以上是一般性的想法,可以帮助其他人更好地理解为什么视图可能不会更新。