写这篇博客的时候,脑海里一直在思考一个问题:
我修改 bootstrap-treeview 的源码,算侵权了吗?bootstrap-treeview是一个开源的插件,理论上来说是可以修改的,但总感觉有些怪怪的,平时也没注意到这块的信息,有没有对块这比较了解的大佬帮忙解答下。
本着学习、分享和记录的心态,先记录下 bootstrap-treeview 修改源码以实现文本text取值key可配置。我主业是Java后端,对前端只是稍有了解,修改的可能不是很规范,还忘大家包涵和指正。
bootstrap-treeview 默认读取的数据格式是:{text:"显示的文本",nodes:[{text:"子集文本"}]} ,然而在我们开发过程中,并不一定都是返回的key都是这个,如果因为树形视图而修改返回属性key值,觉得有些没必要,为此,我研究了下 bootstrap-treeview 的源码,并尝试做了些修改,成功实现了 文本text和子集nodes取值可配置。
准备阶段:
准备好bootstrap-treeview.js 或 bootstrap-treeview.min.js ,我目前的版本是 1.2.0 如果是压缩过的min.js,则需要格式化一下,比较好修改
bootstrap-treeview.min.js 部分源码截图
格式化后的 bootstrap-treeview.min.js 的部分源码截图, 我重命名为 bootstrap-treeview.js
修改显示文本 text 可配置:
1. 打开 bootstrap-treeview.js,在 f.settings 中增加配置项 text,并设置默认值为 text,初始化时未配置,默认取值 key
f.settings = {
injectStyle: !0,
levels: 2,
//省略原有的配置项,增加配置项 text,并设置默认值为 text
text:'text'
},
2.当前js文件中搜索 .text 替换成我们的配置项
我当前的版本,.text 仅在 237行中存在两处,直接替换成 [d.options.text] 即可
3.在我们业务代码初始化 bootstrap-treeview 时增加 text:'自定义的值'
var _treeData = [{id:"0", name:"顶级菜单", children:result.data}];
var _treeConf = {
data: _treeData, // 数据源
expandIcon: 'ti-angle-right',
onhoverColor: "rgba(0, 0, 0, 0.05)",
selectedBackColor: "#03a9f3",
collapseIcon: 'ti-angle-down',
showCheckbox: true,
multiSelect:false,
text:'name' //增加我们刚刚配置项的 text ,并设值为 name
}
_treeConf = u.copyJson(_treeConf, _conf);
$element.treeview(_treeConf);
因为我当前业务数据返回的文本是 name 中取值,所以我在初始化时,直接配置成 text:'name'
至此, bootstrap-treeview 实现文本内容 text 可配置修改完成,当前读取的数据格式由原来的 {text:"显示的文本"} 修改成 {name:"显示的文本"}
本来还想把子集 nodes 也改成可配置的,但无奈,找不到一个公共的对象可以从里面取值,后面有时间再看下,如果有研究出来,到时再来更新