Code Monkey home page Code Monkey logo

eletree's Introduction

你好 👋

我是hsianglee,常用名“凉宫”,2018届本科毕业,计算机科学与技术,现居安徽,小小前端程序猿。

hsiangleev

eletree's People

Contributors

hsiangleev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

eletree's Issues

使用cdn或者layui方式时报错Uncaught TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'.

如题所示,使用cdn或者layui方式时,均提示Uncaught TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'

这是我的html代码,粘贴说明文档

<title>笔记目录编排</title> <script src="//eletreejs.surge.sh/eleTree.js"></script> <script> var data = [ { "label": "安徽省", "id": "001", "isOpen": true, "children": [ { "label": "淮北市", "id": "001001" }, { "label": "马鞍山市", "id": "001002", "isOpen": true, "children": [ { "label": "花山区", "id": "001002001", "isOpen": true, "children": [ { "label": "霍里街道", "disabled": true, "checked": true, "id": "001002002001", "radioDisabled": true }, { "label": "桃源路", "id": "001002002002" }, { "label": "湖东路", "checked": true, "id": "001002002003", "radioChecked": true } ] }, { "label": "雨山区", "id": "001002002" }, { "label": "和县", "id": "001002003" } ] }, { "label": "合肥市", "id": "001003" } ] }, { "label": "河南省", "id": "002", "children": [ { "label": "郑州市", "id": "002001" }, { "label": "开封市", "id": "002002" } ] }, { "label": "江苏省", "id": "003", "children": [ { "label": "苏州市", "id": "003001" }, { "label": "南京市", "id": "003002" }, { "label": "无锡市", "id": "003003" }, { "label": "徐州市", "id": "003004" } ] } ]
var ele = eleTree({
    el: '.eletree',
    data: data,
    showCheckbox: true,
    highlightCurrent: true,
    showRadio: true,
    imgUrl: "//eletreejs.surge.sh/images/",
    icon: {
        fold: "fold.png",
        leaf: "leaf.png",
        checkFull: ".eletree_icon-check_full",
        checkHalf: ".eletree_icon-check_half",
        checkNone: ".eletree_icon-check_none",
        dropdownOff: ".eletree_icon-dropdown_right",
        dropdownOn: ".eletree_icon-dropdown_bottom",
        loading: ".eleTree-animate-rotate.eletree_icon-loading1",
        radioCheck: "radioCheck.png",
        radioCheckNone: "radioCheckNone.png",
    }
})
ele.on('checkbox', function (data) {
    // console.log(this)
    console.log(data)
})
ele.on('radio', function (data) {
    // console.log(this)
    console.log(data)
})
//监听提交
form.on('submit(demo1)', function (data) {
    layer.alert(JSON.stringify(data.field), {
        title: '最终的提交信息'
    })
    return false;
})
</script>

自定义图片被压缩

找了一些200×200和16×16的去测试自定义图片,显示都特别小和模糊,是什么原因吗

选中的效果

image

可以说一下这个效果怎么删除的 需要哪个属性吗

Layui中使用出错

使用layui.use方式使用时,提示Uncaught TypeError: eleTree.render is not a function,大佬能提供一下正确使用方式吗?

isDefaultChangePstatus不生效

                var ele = layui.eleTree({
                    el: '#xxx',
                    data: data,
                    showCheckbox: true,
                    checkOnClickNode: true,
                    defaultPid: '1',
                    defaultCheckedKeys: ['88','90'],
                    isDefaultChangePstatus: true,
                });

                ele.on('checkbox', function() {
                    let ckd = [];
                    ele.getChecked(false, true).forEach(function (item) {
                        ckd.push(item.id);
                    })
                    ipt.val(ckd.join(','));
                });

正常应该是选中这两个
image
结果却还是全选了
image

异步渲染报错

eletree V2.2.11 版本
使用异步加载树结构时 , 会报 uncaught in promise 错误 这个是不是插件 .catch()没有加上去的问题呢

autoExpandParent设置无效

当我子节点选中设置isopen为true时,希望自动展开父节点,但设置无效,下面是数据格式:
var data = [
{
"label": "安徽省",
"id": "001",
"children": [
{
"label": "淮北市",
"id": "001001"
},
{
"label": "马鞍山市",
"id": "001002",
"children": [
{
"label": "花山区",
"id": "001002001",
"isOpen": true
},
{
"label": "雨山区",
"id": "001002002"
}
]
}
]
}
]

checkbox Bug提交

初始化数据checkbox为禁用状态,当使用updateKeySelf方法更新后(将checkbox改为启用),选择子节点时父节点没有默认选中。

节点取消选中状态

image
请问下节点点击显示选中(点击后被添加了eleTree-title-active样式)能否取消选中,reload不会清除这个选中

嵌在layUI选项卡中,右键菜单头几个会飘很远

详情:
1、layui的tab选项卡中,加入layui的卡片面板布局,再写入eletree,开头好多个会飘得很远,如图:
image

拖到下面的一些选项则不会,如图:
image

似乎开头的几个的top都会多出100px左右,不知什么原因

isOpen属性渲染后变成int类型

后台接口返回的数据是children格式的,如下:
image
boolean类型的数据都是正常的,经过下面的处理渲染:
`
/**
* 目录树数据
/
var treeData = [];
/
*
* 完整数据
*
* @type {*[]}
*/
var fullData = [];
$.ajax({
url : '../content.do',
type:'POST',
dataType: 'json',
async: false,
success : function(data) {
if (!data['success']) {
layer.msg(data['msg'], {icon: 2,time: 5000});
}
fullData = data.obj;
if (fullData !== null) {
for (let item of fullData) {
if (item['eleTree'] !== null) {
treeData.push(item['eleTree'])
}
}
}
}
});

// eleTree实例化
var ele = eleTree({
el: '#eletree1',
data: treeData,
draggable: true,
indent: 30,
highlightCurrent: true,
accordion: true,
imgUrl: "../../plugins/eletree/images/",
icon: {
fold: "connections.png",
leaf: "video.png",
checkFull: ".eletree_icon-check_full",
checkHalf: ".eletree_icon-check_half",
checkNone: ".eletree_icon-check_none",
dropdownOff: ".eletree_icon-dropdown_right",
dropdownOn: ".eletree_icon-dropdown_bottom",
loading: ".eleTree-animate-rotate.eletree_icon-loading1",
radioCheck: "radioCheck.png",
radioCheckNone: "radioCheckNone.png",
},
customText: function(data) {
var s = data.label
if (data.pid === "") {
s+=<i class="eletree_icon-edit edit_test"></i> <i class="eletree_icon-delete delete_test"></i>
}
return s
}
})
`
这是渲染后log出来的数据,上面是on事件的data,下面是我上面ajax存起来的一个treeData,事件的data.data正常,不知为啥treeData会在渲染后改变这个值,true为2,false为0
image

setchecked设置值的问题

getchecked可以获取半选值,但是反过来setchecked的时候,半选的赋值,子节点全部选中了,这个setchecked是不是该加个选项,一个是只赋值叶子节点,一个是根据key值来选中?

监听事件对data的key遍历不兼容null的属性

场景:编辑目录树,目录树会带一些自定义的属性,后台传来难免有null的
image

进行拖拽、右键菜单等操作节点的操作时,会报Uncaught TypeError: Cannot convert undefined or null to object;并且操作的节点会消失:
image

定位发现似乎是操作节点时,这里的forEach无法兼容null的属性:
image

建议:不知是否可以加入兼容,只遍历操作节点所需的:id,pid,label等必要属性,不遍历用户自定义属性,因为实际场景里目录树带自定义数据方便传输的场景还是挺多的。

我目前是用了一个function来遍历filter掉自己的null属性,属于强行舍弃一些数据的操作了:

/**
	* 过滤掉null的属性
	* @param obj
	*/
function nullFilter(obj){
	if (obj['children'] !== undefined || obj['children'] !== null || obj['children'].length > 0) {
		obj['children'].forEach(e => nullFilter(e));
	}
	Object.keys(obj).forEach(item=>{
		if(obj[item] === null)  delete obj[item]
		if(item === 'data' && obj[item] != null) {
			Object.keys(obj[item]).forEach(e=>{
				if(obj[item][e] === null)  delete obj[item][e]
			})
		}
	});
	return obj;
}

CDN引入脚本时,2次加载报错

我在页面使用CDN加载的方式引入该插件,通过路由切换切换时,2次加载带有该插件的页面时会报错,提示:only one instance of babel-polyfill is allowed,该问题是什么原因引起的,该如何解决或避免呢?

sort field 非 label 字段无效果

var organization_data = [
{id:1000,label:'根组织',type:0,sort_:1,children:[
{id:1001,label:'江苏省',type:0,icon:'chf-icon chf-icon-zuzhijiagou',sort_:1,
children:[
{id:1002,label:'南通市',type:0,icon:'chf-icon chf-icon-zuzhijiagou',sort_:1},
{id:1003,label:'南京市',type:2,icon:'chf-icon chf-icon-zuzhijiagou',sort_:0}
]
},
{id:2001,label:'安回省',type:0,icon:'chf-icon chf-icon-zuzhijiagou',sort_:0,
children:[
{id:2002,label:'a市',type:0,icon:'chf-icon chf-icon-zuzhijiagou',sort_:0},
{id:2003,label:'b市',type:2,icon:'chf-icon chf-icon-zuzhijiagou',sort_:1}
]
}
]},
{id:3000,label:'根组织3',type:0,sort_:0}
];

el5.sort({
field: "sort_", /这里用 sort_无效果,换成 label 有效果/
type: "desc",
})

看源码 sort.js 是有用到 field 的,不知道问题出在哪儿

updateKeySelf函数无法删除属性

如题,使用
ele.updateKeySelf(data.data.id, data.data)
可以新增、更新一些自定义的属性,用于后台处理,但是delete data.data.属性之后去updateKeySelf(),自定义属性依然存在,没有删除

树的 ico 图标自定义

是否可以支持多类型图标节点的自定义,比如 有 设备图标、组织图标、人员图标 等,现在只有目录和节点两种类型, ico 的自体图标最好能支持 color 的属性,这样就可以改颜色,不然就是黑白的

怎么全选和反选所有的节点数据

  1. 怎么设置一个按钮用来 一键全选和反选 所有的节点数据,比如你的例子中省市的数据,有33个省市平级的,我怎么去全选和反选啊。

image
我的这个左边的线条看着好粗啊,不像官网显示的那么纤细,不知市何原因。
3. 看你官网做的这么全,想提点个人意见,不喜可略过。
不知是否用过 zTree 插件,这个是我用过的迄今为止最好用、文档最全的树插件,作者可以去参考下。
别人有的功能你要有,别人没有的你更要有,这样才能有竞争力。
哈哈,纯属个人意见,不喜勿喷。

setChecked选中

setChecked只能选中数据的第一层吗?子节点怎么设置不了选中?

是否不支持 layui 了呢

右键菜单的小问题

  1. 点击编辑后,鼠标无法点击选中文字的位置开始编辑,只能通过键盘左右键来移动光标.
  2. 添加同级或下级菜单,在编辑完成后,无法通过回车触发提交事件.需要手动将鼠标点击其他地方才触发.

希望可以改进这2个功能,好像做反了的样子,编辑时需要鼠标有效,添加时需要回车可以添加

【layui版问题】getChecked方法取值异常

版本:
layui版本:v2.6.8
eleTree插件版本:hsiangleev-layui-eleTree

问题描述:
初始化eleTree,参数为checkStrictly为默认【即父子节点联动的情况下】

如果只是勾选父节点,然后直接通过getChecked方法获取只是其父节点,而相关的子节点没法获取
image

但是展开子节点之后,再次通过getChecked方法就可以正常获取所有选中的节点
image

并且这种情况出现在每次加载相关页面的时候,在展开后获取正常。

分析原因:
在未展开子节点的情况下,父节点相关的子节点dom并没有生成。而getChecked则是直接通过选择器选择的Dom,所以就无法获得相关子节点的数据。

if(leafOnly){
                el=options.elem.find(".layui-icon.leaf-icon").parent(".eleTree-node-content-icon")
                    .siblings("input.eleTree-hideen[eletree-status='1']");
            }else if(includeHalfChecked){
                el=options.elem.find("input.eleTree-hideen[eletree-status='1'],input.eleTree-hideen[eletree-status='2']");
            }else{
                el=options.elem.find("input.eleTree-hideen[eletree-status='1']");
            }
            el.each(function(index,item) {
                var obj={};
                var id=$(item).parent(".eleTree-node-content").parent(".eleTree-node").data(options.request.key);
                var label=$(item).siblings(".eleTree-node-content-label").text();
                obj[options.request.key]=id;
                obj[options.request.name]=label;
                obj.elem=item;
                obj.othis=$(item).siblings(".eleTree-checkbox").get(0)
                arr.push(obj);
            })

初始化和设置值的时候,数组必须转换为整形,这有点蛋疼

最近看了很多tree,觉得作者您的这个挺不错的,
但是经过测试发现

defaultCheckedKeys属性和setChecked方法传入的数组,需要使用parseInt转换成整形,讲真的,这样又得多写三行代码。
。。。。为毛呢?作者在for的时候,直接parseInt不就好了吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.