jsTree------树形结构--点击节点异步加载数据(在节点上加载数据,而不是tree全面刷新数据)

1 页面div id 加载展示数据

jsTree------树形结构--点击节点异步加载数据(在节点上加载数据,而不是tree全面刷新数据)
function test() { 
    $('#jstree').jstree({
        'core' : {
            'check_callback': true,
            "data" : function (obj, callback){
                    $.ajax({
                        type : "post",
                        url : "/building/building/getAreaBuild",//getAreaBuild=getTreeArea
                        dataType : "json", 
                        success : function(data) {
                            console.info(data);
                            if(data) {
                                callback.call(this, data);
                            }else{
                                $("#jstree").html("暂无数据!");
                            }
                        }
                    });
            }
        },
        "plugins" : [ "sort" ]
    }).bind("select_node.jstree", function(event, data) {
        var inst = data.instance;
        var selectedNode = inst.get_node(data.selected);
        //console.info(selectedNode.aria-level);
        var level = $("#"+selectedNode.id).attr("aria-level");
        if(parseInt(level) <= 4){
            loadConfig(inst, selectedNode);
        }
    });  
}
function loadConfig(inst, selectedNode){
    var parent=selectedNode.parent;
    var temp = selectedNode.text;
    var aId=selectedNode.id;
     if(parent==-1){
         $.ajax({
                url : "/building/building/getAreaBuild",
                data : {
                    'aId' : aId
                },
                dataType : "json",
                type : "post",
                success : function(data) {
                    if(data) {
                       selectedNode.children = [];
                       $.each(data.children, function (i, item) {
                                   var obj = {text:item};
                                   //$('#jstree_div').jstree('create_node', selectedNode, obj, 'last');
                                inst.create_node(selectedNode,item,"last");
                       });
                       inst.open_node(selectedNode);
                    }else{
                        $("#jstree_div").html("暂无数据!");
                    }
                }
            });
     }else{
         alert("查看单元数据");
         $.ajax({
                url : "/building/building/getAreaBuildUnit",
                data : {
                    'aId' : aId
                },
                dataType : "json",
                type : "post",
                success : function(data) {
                    if(data) {
                       selectedNode.children = [];
                       $.each(data.children, function (i, item) {
                                   var obj = {text:item};
                                   //$('#jstree_div').jstree('create_node', selectedNode, obj, 'last');
                                inst.create_node(selectedNode,item,"last");
                       });
                       inst.open_node(selectedNode);
                    }else{
                        $("#jstree_div").html("暂无数据!");
                    }
                }
            }); 

     }
     
}

2 controller业务逻辑实现、

jsTree------树形结构--点击节点异步加载数据(在节点上加载数据,而不是tree全面刷新数据)

@Controller
@RequestMapping("/building/building")
public class BuildingController extends BaseController{
    @Autowired
    private BuildingService buildingService;
     @GetMapping("/getTreeArea")
       @ResponseBody
       public Tree<BuildingDO> tree(Model model) {
          Tree<BuildingDO> tree = new Tree<BuildingDO>();
          tree = buildingService.getTreeArea();
          return tree;
       }
     @PostMapping("/getAreaBuild") // @ResponseBody 
     @ResponseBody //public Tree<BuildingDO> getAreaBuild(@RequestParam("aId") String aId,Model model) {
    public Tree<BuildingDO> getAreaBuild(Model model) {
         String areaId=getUser().getAreaIds().get(0);
         System.out.println("======================================333=========="+"444="+areaId);
          Tree<BuildingDO> tree = new Tree<BuildingDO>();
          tree = buildingService.getTreeAreaBuild(areaId);
          return tree;
       }
     @PostMapping("/getAreaBuildUnit") // @ResponseBody 
     @ResponseBody 
    public Tree<BuildingDO> getAreaBuildUnit(@RequestParam("aId") String aId,Model model) {
         System.out.println("======================================333=========="+aId);
          Tree<BuildingDO> tree = new Tree<BuildingDO>();
          tree = buildingService.getAreaBuildUnit(aId);
          return tree;
       }

 

3 maper.xml

jsTree------树形结构--点击节点异步加载数据(在节点上加载数据,而不是tree全面刷新数据)


<select id="getTree" resultType="com.qianyan.basicInfo.builds.domain.BuildingDO">
         select * from build_unit
          <where>  
                    <if test="buildId != null and buildId != ''"> and build_id = #{buildId} </if>
                   
                  </where>
        </select>
        <select id="getTreeArea" resultType="com.qianyan.basicInfo.builds.domain.BuildingDO">
         SELECT
                `basic_area`.`a_id` AS `id`,
                `basic_area`.`a_name` AS `name`,
                '0' AS `parent_id`
            FROM
                `basic_area`
        </select>
        <select id="getTreeAreaBuild" resultType="com.qianyan.basicInfo.builds.domain.BuildingDO">
        SELECT
            `basic_area`.`a_id` AS `id`,
            `basic_area`.`a_name` AS `name`,
            '0' AS `parent_id` 
        FROM
            `basic_area`
            <where>  
                    <if test="_parameter != null and _parameter != ''"> and a_id = #{_parameter}</if>
                    </where>
        UNION
            SELECT
                `basic_building`.`b_id` AS `id`,
                `basic_building`.`b_name` AS `name`,
                `basic_building`.`a_id` AS `parent_id`
            FROM
                `basic_building`
        </select>
        <select id="getAreaBuildUnit" resultType="com.qianyan.basicInfo.builds.domain.BuildingDO">
         SELECT
                `basic_area`.`a_id` AS `id`,
                `basic_area`.`a_name` AS `name`,
                '0' AS `parent_id`
            FROM
                `basic_area`
            UNION
                SELECT
                    `basic_building`.`b_id` AS `id`,
                    `basic_building`.`b_name` AS `name`,
                    `basic_building`.`a_id` AS `parent_id`
                FROM
                    `basic_building`
                UNION
                    SELECT
                        `basic_unit`.`r_dy` AS `id`,
                        `basic_unit`.`r_dy_name` AS `NAME`,
                        `basic_unit`.`b_id` AS `parent_id`
                    FROM
                        `basic_unit`
                        <where>  
                    <if test="_parameter != null and _parameter != ''"> and b_id = #{_parameter}</if>
                    </where>
        </select>