【问题标题】:Vuetify v-treeview doesn't delete nodeVuetify v-treeview 不删除节点
【发布时间】:2020-12-29 04:03:20
【问题描述】:

我是 vuejs 和 vuetify 的初学者,我尝试在树视图中添加和删除节点。

当我执行 .push(item) 时,树视图会更新,但当我从数组中删除项目时,树视图不会更新。

这是我的代码示例

我的树视图

  <v-treeview
    [...]
    :items="formatedItems"
    item-key="slug"
    [...]
  >
      [...]
  </v-treeview>

formatedItems 在数据中声明如下:

data: () => ({
  [...]
  formatedItems: [{
    id: 0,
    slug: null,
    name: i18n.t(****),
    children: []
  }]
  [...]
}),

此代码在我的树视图中正确添加了一个子项:

this.formatedItems[0].children.push({
    id: element.id,
    slug: element.slug,
    name: element.name,
    children: []
});

另一方面,这段代码从我的数组中删除了该项目,但不更新树视图:

_.remove(this.formatedItems[0].children, function(n) {
  return n.slug == element.slug;
});

this.formatedItems = this.formatedItems; // I tried this to trigger a potential magical update of vuejs but nothing...

我不知道该尝试什么了,所以我来问你这个问题:

.push 是一个内置函数,并且知道我使用 lodash 函数进行删除,是否有什么我不明白使用 vuejs 导致我的树视图不更新的地方?

感谢您的关注

【问题讨论】:

  • 看起来其他地方的问题。我尝试了一个基本示例,一切正常。例如我使用过滤方法删除codepen.io/DavidGolodetsky/pen/eYZMbgm
  • 谢谢,我想知道这两个代码之间的区别,但没关系,感谢您的解决方案!如果您想将其发布为我可以接受的答案,那将是我的荣幸。
  • Vue 无法检测到数组的以下更改: 当您直接设置带有索引的项目时,例如vm.items[indexOfItem] = newValue 修改数组长度时,例如vm.items.length = newLength 见:vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats。基本上,拼接就可以了;)

标签: vue.js vuejs2 treeview vuetify.js


【解决方案1】:

看起来问题在其他地方。我尝试了一个基本示例,一切正常。 除了我使用过滤方法进行删除。 codepen.io/DavidGolodetsky/pen/eYZMbgm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多