Closed enjoyshuai closed 5 years ago
有一个updateFun的方法 通过 this.$refs.fun处理 具体可以看一下demo // 如果是请求后台: this.post(url,postobj,response=>{ this.$refs.treeSelect.treeDataUpdateFun(response.data); });
再问一下大佬,数据更新之后如何还能让这个value继续对应最新的name值啊?
更新之后就能树展开了呀,有问题贴一下全部代码吧,或者在线code
代码就是GitHub上的源码啊,我就是动态给data赋值了而已,赋值之后value默认值还是3,但是组件框里没有 啊啊啊啊 这个对应的值了,就像这样 我希望他是这样的 ji 就是不用自己点击框里就有默认值,如何操作?
大佬,代码如下,几乎没有改动,但是select却获取不到默认值,按理来说默认值应该是哈哈哈哈的,求大佬帮忙!
<template>
<div id="app">
<ELTreeSelect :styles="styles" v-model="values" :selectParams="selectParams" :treeParams="treeParams" @searchFun="_searchFun" @node-click="_nodeClickFun" ref='treeSelect' />
</div>
</template>
<style>
#app {
display: flex;
justify-content: space-between;
width: 600px;
}
</style>
<script>
import ELTreeSelect from './components/el-tree-select.vue';
export default {
name: 'App',
data() {
return {
styles: {
width: '300px'
},
test: '',
values: '3',
selectParams: {
'clearable': true,
'placeholder': '请输入内容'
},
treeParams: {
'default-expand-all': true,
'filterable': true,
'check-strictly': true,
'render-content': this._renderFun,
'data': [],
'props': {
children: 'children',
label: 'name',
value: 'testId'
}
}
}
},
mounted() {
this.$refs.treeSelect.treeDataUpdateFun([{
testId: '1',
name: '哎哎哎',
children: [{ testId: '3', name: '哈哈哈哈哈' }]
},
{
testId: '2',
name: '发生的'
}]);
},
methods: {
// 下拉框修改
_selectChange(val) {
console.log(val, '<-select change');
},
// 树点击
_nodeClickFun(data, node, vm) {
console.log('this _nodeClickFun', this.values, data, node);
},
// 树过滤
_searchFun(value) {
console.log(value, '<--_searchFun')
// 自行判断 是走后台查询,还是前端过滤
// this.$refs.treeSelect.$refs.tree.filter(value);
this.$refs.treeSelect.filterFun(value);
// 后台查询
// this.$refs.treeSelect.updateFun(treeData);
},
// 自定义render
_renderFun(h, { node, data, store }) {
return (
<span class="custom-tree-node">
<span>{node.label}</span>
</span>);
}
},
components: { ELTreeSelect }
};
</script>
已修复,el-tree数据局部更新因为数组的双向绑定会失败,在替换data的时候需要全部替换data 另外做了data赋值的时候增加一个value判断回显。 感谢!
谢谢大佬了,我还有个小建议提一下,就是这个value的类型,是否应该再加个number类型的,不过不加也能用,只是会有警告而已,大佬可以考虑下次更新的时候顺手加一个
作为ID值,不应该存在number情况,所以这个不做考虑哈
我看了一下源码,好像是因为这么赋值之后导致el-tree没有监听到数据的变化了,直接将data赋值this.treeParams.data就可以了,不知道作者有没有更好的解决办法能帮忙解决一下的!