whyyouhitme_ 2019-02-18 10:57 采纳率: 57.1%
浏览 1359
已采纳

前后端数据一致性的问题

前端页面有easyui-tree,后端返回List< EasyUITreeNode>
当后端EasyUITreeNode节点中,属性定义为public String state的时候,前端可以正常展开树。当public String status的时候,前端不能展开树。但是因为后端是自己敲的,前端是拷贝的,以为命名变量只要自己知道意义就好,不知道原来还有这个注意点。那么问题来了。怎样从前端页面分析出后端的变量到底应该叫什么呢??以下是前端代码

图片说明

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<div>
     <ul id="contentCategory" class="easyui-tree">  </ul>
</div>
<div id="contentCategoryMenu" class="easyui-menu" style="width:120px;" data-options="onClick:menuHandler">
    <div data-options="iconCls:'icon-add',name:'add'">添加</div>
    <div data-options="iconCls:'icon-remove',name:'rename'">重命名</div>
    <div class="menu-sep"></div>
    <div data-options="iconCls:'icon-remove',name:'delete'">删除</div>
</div>
<script type="text/javascript">
//文档加载后处理以下的逻辑
$(function(){
    //在#contentCategory 所在的标签中创建一颗树
    $("#contentCategory").tree({
        url : '/content/category/list',
        animate: true,
        method : "GET",
        //右击鼠标触发
        onContextMenu: function(e,node){
            //关闭原来的鼠标的默认事件
            e.preventDefault();
            //选中 右击鼠标的节点
            $(this).tree('select',node.target);
            //展示菜单栏
            $('#contentCategoryMenu').menu('show',{
                left: e.pageX,//在鼠标的位置显示
                top: e.pageY//在鼠标的位置显示
            });
        },
        //在选中的节点被编辑之后触发
        onAfterEdit : function(node){
            //获取树本身
            var _tree = $(this);

            //表示的是新增的节点  新增
            if(node.id == 0){
                // 新增节点
                //parentId:node.parentId,name:node.text  
                //parentId:就是新增节点的父节点的Id
                //name:新增节点的文本
                $.post("/content/category/create",{parentId:node.parentId,name:node.text},function(data){
                    if(data.status == 200){
                        //更新节点
                        _tree.tree("update",{
                            target : node.target,//更新哪一个节点
                            id : data.data.id//更新新增节点的id 
                        });
                    }else{
                        $.messager.alert('提示','创建'+node.text+' 分类失败!');
                    }
                });
            }else{
                $.post("/content/category/update",{id:node.id,name:node.text});
            }
        }
    });
});
//处理点击菜单的事件
function menuHandler(item){
    //获取树
    var tree = $("#contentCategory");
    //获取被选中的节点 就是右击鼠标时的所在的节点
    var node = tree.tree("getSelected");

    //判断选择的是添加还是重命名还是删除

    //  ==     1==1   true  1=="1"  true;
    //  ===   1===1   true  1==="1" false
    //点击“添加” 
    if(item.name === "add"){
        //在被点击的节点下追加一个子节点
        tree.tree('append', {
            parent: (node?node.target:null), //被添加的子节点的父
            //
            data: [{
                text: '新建分类123',//节点的内容
                id : 0,//节点的id
                parentId : node.id//新建的节点的父节点的id
            }]
        }); 
        //找到id为0的节点  添加的节点
        var _node = tree.tree('find',0);
        //选中id为0的节点 添加的节点 开启编辑
        tree.tree("select",_node.target).tree('beginEdit',_node.target);
    }else if(item.name === "rename"){
        tree.tree('beginEdit',node.target);
    }else if(item.name === "delete"){
        $.messager.confirm('确认','确定删除名为 '+node.text+' 的分类吗?',function(r){
            if(r){//如果是true 表示要执行以下的逻辑
                $.post("/content/category/delete/",{id:node.id},function(){
                    //后台删除成功后,删除前端的节点
                    tree.tree("remove",node.target);
                }); 
            }
        });
    }
}
</script>
  • 写回答

4条回答 默认 最新

  • 黄宝康 2019-02-18 11:14
    关注

    这个并不是说拷贝别人的前端,而后端自己写的问题,如果用到的是easyui tree,则需要根据easyui tree的api属性来决定的,这个树的展现都逃不了官方easyui tree的属性。

    id:节点的 id,它对于加载远程数据很重要。
    text:要显示的节点文本。
    state:节点状态,'open' 或 'closed',默认是 'open'。当设置为 'closed' 时,该节点有子节点,并且将从远程站点加载它们。
    checked:指示节点是否被选中。
    attributes:给一个节点添加的自定义属性。
    children:定义了一些子节点的节点数组。
    

    所以你说的定义变量state还是status,只有你后台调用接口返回了easyui tree需要的json串即可

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!