Используя #vuetify #Treeview в проекте #vue.js, нет примера того, как перезагрузить отредактированный узел или как обновить родителя удаленного узла. Если какой-либо образец или какая-либо ссылка на помощь?
@Styx На данный момент мы преобразовали модель данных дерева из json в строку и обратно в json, так что дерево вынуждено перезагрузить ее, но это не мудрый способ, если вы согласны. Они должны были предсказать метод для вызова, верно?
Да, должны были. Кстати, вы можете принудительно перезагрузить без преобразования в/из строки/json: this.$set(this, 'treeModel', Object.assign({}, this.treeModel))
Вы правы, этот путь тоже возможен, поскольку дерево большое, перезагрузка всего повлияет на производительность приложения и изменит состояние свертывания пользовательского дерева. В других компонентах можно вызвать любой конкретный узел и выполнить перезагрузку с этого узла. Как это возможно здесь?
Вы можете предоставить минимальный пример проблемы в codepen, чтобы получить больше поддержки.
У меня была аналогичная проблема, я хотел удалить активный элемент из v-treeview.
Я использую логические удаления, поэтому мой код выглядит так. Это не требует ручного обновления древовидного представления или каких-либо странных вызовов назначения объектов.
При нажатии на узел дерева он становится активным[0]
<v-btn @click = "deleteNode()">delete</v-btn>
deleteNode() {
if (confirm("Are you sure you want to delete this item?")) {
this.active[0].status = "Deleted"; //flag as deleted
this.active.splice(0, 1); //remove from active array
this.removeDeleted(this, this.items); now remove it from the bound array
}
}
removeDeleted(me, currentArray) {
const delItems = [];
currentArray.forEach(element => {
if (element.status == "Deleted") {
delItems.push(element);
}
if (
element.children != undefined &&
element.children != null &&
element.children.length > 0
) {
me.removeDeleted(me, element.children);
}
});
delItems.forEach(item => {
currentArray.splice(currentArray.indexOf(item), 1);
});
},
Он должен автоматически обновлять узлы, но вы можете попробовать вызвать
.updateAll()