YnTree是一款专门用于权限管理的权限树插件,它依靠数据来驱动,不依赖于任何别的插件并且支持ajax。
<div id="tree" class=" fl tree"></div> var options = { checkStrictly: true, data:[ { name: "系统管理", inputName: "system", value: "系统管理", children: [ { name: "用户管理", inputName: "user", value: "用户管理", className: "", checked: false, disabled: false, datas: {}, children: [ { name: "添加用户", inputName: "user", value: "添加用户", checked: false, disabled: true }, { name: "查看用户", inputName: "user", value: "查看用户" }, { name: "编辑用户", inputName: "user", value: "编辑用户", disabled: true, children: [ { name: "删除用户", inputName: "user", value: "删除用户" }, { name: "修改用户", inputName: "user", value: "修改用户", checked: false } ] } ] }, { name: "投诉管理", inputName: "complaint", value: "投诉管理", checked: false, children: [ { name: "添加投诉", inputName: "complaint", value: "添加投诉" }, { name: "删除投诉", inputName: "complaint", value: "删除投诉" }, { name: "编辑投诉", inputName: "complaint", value: "编辑投诉" }, { name: "查看投诉", inputName: "complaint", value: "查看投诉" } ] } ] }, { name: "我的公司", inputName: "company", value: "我的公司", children: [ { name: "公司管理", inputName: "company manage", value: "公司管理" }, { name: "部门管理", inputName: "department manage", value: "部门管理" } ] } ] }; var yntree = new YnTree(document.getElementById("tree"), options);
options必须是一个对象,该对象包含着实例化YnTree所需的各种参数。
data属性(当数据为异步加载时,data属性可为空数组)
data必须是一个数组,这个数组中包含着整棵树的所有节点,在权限树中这个数据就是所有的权限。(当数据为异步加载时,data属性可为空数组,在数据获取后再调用reInit()方法即可)数组中的每一项必须是一个对象,该对象的结构如下:
{ /*节点名称*/ name: "用户管理", /*节点中的复选框的name属性值*/ inputName: "user", /*复选框的value属性值*/ value: "用户管理", /*需要添加到复选框中的class name*/ className: "", /*复选框是否选中*/ checked: false, /*复选框是否禁用*/ disabled: false, datas: {}, /*节点的子节点*/ children: [] }
onchange回调
节点change事件,每当复选框选中或取消选中时都会触发此回调函数,触发时会传递两个参数过去,一个是input(当前触发的复选框),另一个是ynTree(当前树对象)。
checkStrictly属性
checkStrictly表示是否严格的遵循父子互相关联的做法,默认为true。如果为false,则点击子节点父节点不会选中,如果当前子节点还有子节点,则子节点也不会选中。
select(condition, flag)
据id、复选框的值或复选框设置复选框选中或不选中。
condition {stirng、dom} id、复选框的值或复选框
flag {boolean} 选中或不选中
返回值 {object} 返回当前树对象
disable(condition, flag)
据id、复选框的值或复选框设置复选框可用或不可用。
condition {stirng、dom} id、复选框的值或复选框
flag {boolean} 可用或不可用
返回值 {object} 返回当前树对象
spread(condition, flag)
据id、复选框的值或复选框设置节点展开或收缩。
condition {stirng、dom} id、复选框的值或复选框
flag {boolean} 展开或收缩
返回值 {object} 返回当前树对象
getCheckedInputs()
获取所有选中的复选框
返回值 {array} 返回所有选中的复选框
getValues()
获取所有选中的复选框的值
返回值 {array} 返回所有选中的复选框的值
reInit([data])
重新初始化权限树,当通过ajax获取数据时可以通过此方法重新初始化权限树
data {array} 权限树数据,这是一个可选参数
返回值 {object} 返回当前树对象
destroy()
销毁当前树
返回值 {undefined} undefined
selectDown(flag)
树节点一直向下寻找子节点,并将子节点选中。当前节点不会选中
data {flag} 当前节点下的所有子节点是否全部选中
返回值 {object} 返回当前节点对象
selectUp(flag)
树节点一直向上寻找父节点,并将父节点选中。当前节点不会选中
data {flag} 当前节点的所有父节点是否全部选中
返回值 {object} 返回当前节点对象
select(flag)
设置当前节点选中或不选中。如果当前节点有子节点,则调用selectDown向下查找将当前子节点全部选中或不选中,然后再调用selectUp向上查找将当前节点的所有父节点都选中或不选中。
data {flag} 当前节点是否选中
返回值 {object} 返回当前节点对象
disable(flag)
设置当前节点可用或不可用。
data {flag} 当前节点是否可用或不可用
返回值 {object} 返回当前节点对象
spread([flag])
设置当前节点展开或收缩。
data {flag} 当前节点展开或收缩,可选参数,如果不传参数则会自动切换节点展开或收缩
返回值 {object} 返回当前节点对象
getYnTree(id)
根据当前节点中的树id获取权限树
data {id} 树id
返回值 {object} 返回当前节点所属的权限树
在 onchange 中调用 getValues 会有问题 , onchange执行时机有问题 , 加个
setTimeout(() => { console.log(ynTree.getValues()) })
就行了