aceAdmin fuelux tree 从后台获取数据,并设置节点ID等属性
如题,从后台封装数据,有两种方式渲染节点的数据:
1.全部节点加载
2.根据父节点加载子节点
首先,先介绍下第一种渲染方式:
后台返回数据格式(所有的附加属性,都可放在additionalParameters下):

前端页面html:
<div class="widget-body">
<div class="widget-main padding-8">
<div id="treeview" class="tree"></div>
<div class="hr"></div>
</div>
</div>
前端js渲染:
var remoteUrl = '/business/function/getFuncsTreeAll';
var remoteDateSource = function(options, callback) {
var self = this;
var $data = null;
if(!("name" in options) && !("type" in options)){
$.ajax({
url: remoteUrl,
data: 'parent_id=0000',
type: 'POST',
dataType: 'json',
success : function(response) {
if(response.status == "OK")
callback({ data: response.data })
},
error: function(response) {
//console.log(response);
}
});
return;
}
else if("type" in options && options.type == "folder") {
if("additionalParameters" in options && "children" in options.additionalParameters)
$data = options.additionalParameters.children;//点击父节点,加载子节点
else $data = {}//no data
}
if($data != null)//this setTimeout is only for mimicking some random delay
setTimeout(function(){callback({ data: $data });} , parseInt(Math.random() * 500) + 200);
};
$('#treeview').ace_tree({
dataSource: remoteDateSource ,
multiSelect:true,
loadingHTML:'<div class="tree-loading"><i class="ace-icon fa fa-refresh fa-spin blue"></i></div>',
'open-icon' : 'ace-icon tree-minus',
'close-icon' : 'ace-icon tree-plus',
'selectable' : true,
'selected-icon' : 'ace-icon fa fa-check',
'unselected-icon' : 'ace-icon fa fa-times'
});
//show selected items inside a modal
$('#submit-button').on('click', function() {
var output = '';
var items = $('#treeview').tree('selectedItemsAndParents');//这个是我自己扩展的方法,框架应是selectedItems
for(var i in items) if (items.hasOwnProperty(i)) {
var item = items[i];
output += item.additionalParameters['id'] + ":"+ item.name+"\n";//获取附加属性
}
$('#modal-tree-items').modal('show');
$('#tree-value').css({'width':'98%', 'height':'200px'}).val(output);
});
第二种方式渲染(根据父节点加载子节点数据),主要是remoteDateSource 的实现不一样:
var remoteDateSource = function(options, callback) {
var parent_id = null
if( !('text' in options || 'type' in options) ){
parent_id = "0000";//load first level data
}
else if('type' in options && options['type'] == 'folder') {//it has children
if('additionalParameters' in options && 'children' in options.additionalParameters)
parent_id = options.additionalParameters['id']
}
if(parent_id !== null) {//根据父节点id,请求子节点
$.ajax({
url: remoteUrl,
data: 'parent_id='+parent_id,
type: 'POST',
dataType: 'json',
success : function(response) {
if(response.status == "OK")
callback({ data: response.data })
},
error: function(response) {
//console.log(response);
}
})
}
}
附录----
selectedItemsAndParents(返回选中的叶子节点以及父类节点)实现:
selectedItemsAndParents: function() {
var $sel = this.$element.find(".tree-selected");
var data = [];
$.each($sel,
function(index, value) {
data.push($(value).data());
var $parent = $(value).parents("li");
$.each($parent,function(index_parent,p){
if(typeof($(p).attr("role"))!="undefined") {
var result = $.inArray($(p).data(), data);
if(result==-1){
data.push($(p).data());
}
}
});
});
return data
}
aceAdmin fuelux tree 从后台获取数据,并设置节点ID等属性的更多相关文章
- Swift - 后台获取数据(Background Fetch)的实现
前面讲了如何让程序申请后台短时运行.但这个额外延长的时间毕竟有限.所以从iOS7起又引入两种在后台运行任务的方式:后台获取和后台通知. 1,后台获取介绍 后台获取(Background Fetch)是 ...
- ligerUI---下拉菜单(menubar)动态显示(从后台获取数据)
写在前面: ligerui的下拉菜单是有点丑的,这也是没有办法的事........这里主要记录下,如何从后台获取数据进行菜单显示. 有两种方式:1.使用json数组来动态添加 2.字符串拼接. 其 ...
- jsTree通过AJAX从后台获取数据
页面代码: <div id="MenuTree"></div> javascript代码: $(document).ready(function ($) { ...
- Vue---从后台获取数据vue-resource的使用方法
作为前端人员,在开发过程中,我们大多数情况都需要从后台请求数据,那么在vue中怎样从后台获取数据呢?接下来,我简单介绍一下vue-resource的使用方法,希望对大家有帮助. 一.下载vue-res ...
- 在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效??
在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效?? 是因为swiper提前初始化了,那时候数据还没有完全出来.这里有两种解决办法 1. 使用vue提供的$nextTic ...
- 一、表单和ajax中的post请求&&后台获取数据方法
一.表单和ajax中的post请求&&后台获取数据方法 最近要做后台数据接收,因为前台传来的数据太过于混乱,所以总结了一下前台数据post请求方法,顺便写了下相对应的后台接收方法. 前 ...
- vue_elementUI_ tree树形控件 获取选中的父节点ID
el-tree 的 this.$refs.tree.getCheckedKeys() 只可以获取选中的id 无法获取选中的父节点ID想要获取选中父节点的id;需要如下操作1. 找到工程下的node_m ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
- MVC后台获取数据和插入数据的三种方式【二】
MVC模式下,从前端获取数据返回后台,总共有三种形式.下面的代码示例将演示如何将数据返回到后端. 一.首先我们看看表单代码,注意input标签中name的值. <html> <hea ...
随机推荐
- 仿微信朋友圈图片查看-glide加载网络图片,photoview 实现缩放
http://www.cnblogs.com/csonezp/p/5083286.html 这里实现的效果就和微信朋友圈点击图片后查看大图一样,如果你不清楚是什么效果,可以拿出手机,打开朋友圈,找到一 ...
- 【巩固】CSS3的3D动画 ——3D旋转(1)
最近学了妙味的css3的动画,2D,3D的都有,先写一个最简单的3d翻转效果,鼠标移入div,正反面翻转效果. 注意点有: 要给正反面外面加个父级: transform-style: preserve ...
- C#线程并发执行的实例[转]
实现思路:线程执行后进行阻塞,判断当前标记是否达到设置的并发数,如果未达到上限,执行队列中将继续增加线程:如已达到其余线程排队等候.实例代码: 注:其中用到Mutex与Interlocked两个与线程 ...
- python(26)查看文件的大小
有时候,在写文件的时候需要判断文件的大小,或者删除空的文件 import os from os.path import join, getsize def getdirsize(dir): size ...
- python中利用logging包进行日志记录时的logging.level设置选择
之前在用python自带的logging包进行日志输出的时候发现有些logging语句没有输出,感到比较奇怪就去查了一下logging文档.然后发现其在设置和引用时的logging level会影响最 ...
- mvc view-controller mvc annotation-driven
1.mvc view-controller 使页面直接通过某个连接跳转,不进过mvc handler 需要加一个配置 <mvc : view-controller path="/suc ...
- java maven诡异的错误no class found
从服务器下载一个java web项目,启动老提示no class found,查看maven依赖库,相关的jar包都已经引入.同样一个项目,在别的机器都可以运行,唯独在我本机运行出错. 为了排错,将其 ...
- 【原】Windows下常用命令
1.小技巧 打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注:/c表示执行完命令 ...
- ArchLinux KDE安装中文输入法
From: http://www.linuxdiyf.com/viewarticle.php?id=53375 1.安装中文输入法#pacman -S scim-pinyin #拼音输入法#pacma ...
- Node.js初探之hello world
昨天公司内部培训,主讲人王老板对Node.js评价很高,连用几个“变态”来形容,恰好今天周末,有时间来认识下Node.js,对一门新语言最好的认识,是让其输出“hello world”,今天我就利用N ...