matlab uitree update,关于Element UI tree组件 懒加载的更新操作

近期根据需求,要做一个懒加载的组织树,并且可以编辑组织树。但是编辑成功之后,却无法进行实时更新。

一开始想到了很多解决方案,也在网上参考了很多方案,但是都有种种不足。遂查阅了ElementUi的tree组件源代码。

Node.prototype.loadData = function loadData(callback) {

var _this5 = this;

var defaultProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

if (this.store.lazy === true && this.store.load && !this.loaded && (!this.loading || Object.keys(defaultProps).length)) {

this.loading = true;

var resolve = function resolve(children) {

_this5.loaded = true;

_this5.loading = false;

_this5.childNodes = [];

_this5.doCreateChildren(children, defaultProps);

_this5.updateLeafState();

if (callback) {

callback.call(_this5, children);

}

};

this.store.load(this, resolve);

} else {

if (callback) {

callback.call(this);

}

}

};

ps:以上代码来自node_modules/element-ui/lib/tree.js

this明显是当前节点, 看if语句的条件中 this.loaded是当前节点是否已加载 。 resolve中把this.loaded置为了true;

所以只用将当前节点的父节点的loaded属性置为false就行了。 这样再次点击该节点时,会继续请求懒加载方法。

//节点更新成功后的操作

orgSuccess(){

//如果是新增子节点,则刷新当前节点 ,如果是更新当前节点,刷新父节点

let node = this.isNew?this.rightNode:this.rightNode.parent;

node.loaded=false;

node.isLeaf = false;

this.$set(node,'expanded',false);

this.fetchData();

},

PS1 : 这里为了交互更人性化,我将isLeaf和expanded属性也置为了false。

PS2 : 光修改属性是无法触发视图更新的,这里我通过了vue.set()方法来触发视图更新。 vue.set()的用法见官方文档:https://cn.vuejs.org/v2/api/#...

初来乍到,有什么不足或者不对的地方请大家指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值