树节点 ID 未更新。元素 UI Vue
Tree Node Id not updating. Element UI Vue
<el-tree :data="Project">
<span class="custom-tree-node" slot-scope="{ node, data }" v-contextmenu:contextmenu>
<el-input
placeholder="Please input"
v-model.trim="data.label"
@blur="saveOrDiscard(node, data)"
></el-input>
</span>
</el-tree>
我使用了下面的方法,我正在更新树节点的 ID(来自 ajax 调用插入的 ID。我只是简单地更改以清楚地解释问题)。
但是树的数据(我作为项目给出的)没有更新。下次它显示 0 值(我已将其设置为默认值)。
public saveOrDiscard(node: TreeNode<any, TreeData>, data: TreeData) {
//Following 456 is not updating in tree data.
node.data.id = 456;
}
Scoped Slots 和 Slot Props
el-tree
是一个带槽的组件,默认情况下,槽只能访问与包含模板的其余部分相同的实例属性。因此,例如,插槽无法访问 :data
.
如果您必须在父模板中访问此数据,则需要使用 slot props 并显式绑定插槽模板中的数据。所以在 el-tree
组件模板中,你像这样将数据绑定到插槽:
<slot :data="data"></slot>
然后在父模板中,您可以通过 v-slot
指令访问数据,如下所示:
<template v-slot:default="slotProps">
{{ slotProps.data }}
</template>
default
参数指的是插槽名称,如果指定none,则命名为"default"。
Here is a fiddle 显示此行为。
*您可以阅读更多关于老虎机和老虎机道具的信息here。
如下绑定模糊事件对我有用。
@blur="() => saveOrDiscard(node, data)"
而不是关注。
@blur="saveOrDiscard(node, data)"
<el-tree :data="Project">
<span class="custom-tree-node" slot-scope="{ node, data }" v-contextmenu:contextmenu>
<el-input
placeholder="Please input"
v-model.trim="data.label"
@blur="saveOrDiscard(node, data)"
></el-input>
</span>
</el-tree>
我使用了下面的方法,我正在更新树节点的 ID(来自 ajax 调用插入的 ID。我只是简单地更改以清楚地解释问题)。
但是树的数据(我作为项目给出的)没有更新。下次它显示 0 值(我已将其设置为默认值)。
public saveOrDiscard(node: TreeNode<any, TreeData>, data: TreeData) {
//Following 456 is not updating in tree data.
node.data.id = 456;
}
Scoped Slots 和 Slot Props
el-tree
是一个带槽的组件,默认情况下,槽只能访问与包含模板的其余部分相同的实例属性。因此,例如,插槽无法访问 :data
.
如果您必须在父模板中访问此数据,则需要使用 slot props 并显式绑定插槽模板中的数据。所以在 el-tree
组件模板中,你像这样将数据绑定到插槽:
<slot :data="data"></slot>
然后在父模板中,您可以通过 v-slot
指令访问数据,如下所示:
<template v-slot:default="slotProps">
{{ slotProps.data }}
</template>
default
参数指的是插槽名称,如果指定none,则命名为"default"。
Here is a fiddle 显示此行为。
*您可以阅读更多关于老虎机和老虎机道具的信息here。
如下绑定模糊事件对我有用。
@blur="() => saveOrDiscard(node, data)"
而不是关注。
@blur="saveOrDiscard(node, data)"