树形ztree 与angularjs结合,实现下级数据异步加载,点击复选框 填写到输入框里

html:

<input value="" type="text" id="river_cut"   onclick="showMenu('river_cut_drop');" class=" btn btn-default  dropdown-toggle w200 input_ao" style="text-align:left;" />

<div class="dropdown-menu w200 h450 scroll river_cut_drop" style="display:none;">

<ul id="treeriver" class="ztree"></ul>

</div>

js:

//--------------------------------下来框的显示与隐藏----------用与带多选按钮的下拉框,不能点一下就关闭 ------------------------

function showMenu(dropname) {

$("." + dropname).slideDown("fast");

$("body").bind("mousedown", onBodyDown);

}

function hideMenu() {

$(".dropdown-menu").fadeOut("fast");

$("body").unbind("mousedown", onBodyDown);

}

function onBodyDown(event) {

if (!(event.target.id == "dropdown-menu" || $(event.target).parents(".dropdown-menu").length > 0)) {

hideMenu();

}

}

angularjs:

angularjs:

app.controller('leader_searchCtrl', function ($scope, $http, $rootScope) {

$scope.setting = {

check: {

enable: true,

chkboxType: { "Y": "", "N": "" }//联动上下级勾选{ "Y": "ps", "N": "ps" }

},

view: {

showIcon: false

},

data: {

simpleData: {

enable: true,

idKey: "RiverID",

pIdKey: "pid",

rootPId: "0"

},

key: {

name: "RiverName"

}

},

callback: {

onClick: showchild,

onCheck: onCheck,

onExpand:showchild    //点击加减号也加载子层数据

}

};

//正常的异步应该用ztree的async,但我用的时候一直提示:请求的资源不支持 http 方法“GET”,其实我已经早改成post了  没找到解决办法 ,只好用callback 自己写方法了

function showchild(event, treeId, treeNode, clickFlag) {

var treeObj = $.fn.zTree.getZTreeObj(treeId);

//删除当前节点的子节点,重新加载

//treeObj.removeChildNodes(treeNode);

var parentZNode = treeObj.getNodeByParam("RiverID", treeNode.RiverID, null);//获取指定父节点

//  console.log(parentZNode);

if (parentZNode.children == undefined) {

//绑定子节点数据

$http({

method: 'POST',

url: "http://xxxxxx/api/Web/SelectRiverSecond",

data: JSON.stringify({ riverID: treeNode.RiverID }),

}).then(function successCallback(response) {

var jsondata = JSON.parse(response.data); console.log(jsondata);

if (jsondata != null && jsondata != "") {

for (i = jsondata.length - 1; i >= 0; i--) {

jsondata[i].pid = treeNode.RiverID;

jsondata[i].isParent = true;//添加树前面的加号  ,因为异步加载  提前不知道有没有下级

}

newNode = treeObj.addNodes(parentZNode, jsondata, false);

}

});

}  //else { alert("不重新加载数据"); }

};

function onCheck(e, treeId, treeNode) {

//  console.log(treeNode);

var zTree = $.fn.zTree.getZTreeObj(treeId);

nodes = zTree.getCheckedNodes(true);

v = "";

for (var i = 0, l = nodes.length; i < l; i++) {

v += nodes[i].RiverName + ",";

}

if (v.length > 0) v = v.substring(0, v.length - 1);

var cityObj = $("#river_cut");

cityObj.attr("value", v);

}

//绑定默认显示的一级河流

$http({

method: 'GET',

url: 'http://xxxxxx/api/Web/SelectRiverFirst',

}).then(function successCallback(response) {

var data = JSON.parse(response.data);

$scope.RiverFirstList = data

$scope.actionsRiverSecond = function (index) {

var riverFirstID = $scope.RiverFirstList[index].RiverID;

$scope.SelectRiverSecond(riverFirstID);

};

for (i = $scope.RiverFirstList.length - 1; i >= 0; i--) {

$scope.RiverFirstList[i].isParent = true;//添加一级树前面的加号

$scope.RiverFirstList[i].pid = "0";

}

$.fn.zTree.init($("#treeriver"), $scope.setting, $scope.RiverFirstList);

//console.log(data);

});

}

angularjs---end

原文地址:http://blog.51cto.com/zhaoyingyatou/2129854

时间: 2024-08-25 12:35:24

树形ztree 与angularjs结合,实现下级数据异步加载,点击复选框 填写到输入框里的相关文章

(简)树形ztree 与angularjs结合,实现下级数据,点击复选框 填写到输入框里

html: <link href="vendors/zTreeStyle/zTreeStyle.css" rel="stylesheet" /> 生态系统类型* : <asp:TextBox ID="TextBox3" CssClass="form-control" runat="server" MaxLength="200" autocomplete="of

Angularjs中使用ui-route如何异步加载组件?

ui-route相比于angularjs的原生视图路由更好地支持了路由嵌套,状态转移等等.随着视图不断增加,打包的js体积也会越来越大,比如我在应用里面用到了 wangeditor里面单独依赖的jquery就300多k.异步加载各个组件就很有必要.在这里我就以ui-route为框架来进行异步加载说明,希望对大家学习angularjs有所帮助. 首先看一下路由加载文件 angular.module('webtrn-sns').config(['$stateProvider', function (

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(一)

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中,这个问题分一下几步走 1.将弹出框真分页后复选框选择的数据保存. 2.将弹出框保存的数据传到父页面上. 3.将数据在父页面上显示. 4.点击保存将信息存入数据库中. 首先来第一步将弹出框真分页后复选框选择的数据保存. 思路很简单就是先真分页,然后在点击下一页的时候扫描这一页所有点击复选框的数据保存到一个变量数组中.下面就是主要代码: ASP代码: <%@ Page Language="C#" AutoEventWire

【ztree】完美实现复选框功能

在权限系统中,大多数的页面都用到了树形结构,其中最常用的便是树资源的加载和单击事件,除此之外ztree还可以实现很多功能.今天以实现复选框的添加功能为例,咱们再来深入的学习下ztree的应用. 一.实例描述 在用户管理模块中,需要给用户添加角色,而用户与角色的之间是一个多对多的关系.这里我们可以先加载两个角色树资源,通过两个树之间数据的交换,从而得到用户所拥有的角色资源,实现效果如下: 1.用户信息入口 2.加载角色信息 Datagrid表格中的"分配"按钮是针对单个用户的角色分配,而

ztree树复选框的使用说明1

---恢复内容开始--- 项目需要添加和修改的弹窗里面有树形结构一级为部门 二级为人员 : 添加弹窗里面点击input框出现下面树形结构, 修改弹窗里面,一进弹窗input默认有内容时,点击input框下面树形结构想对应的复选框也要勾上, 我在做的过程中遇到个问题,就是修改的时候是正确的因为我打开修改弹窗的时候把选中的树id 保存了 , 但是添加的时候会出现一个问题就是我点击input时树形显示,我选中复选框后input上也有相对应的人名, 但是我发现我少点了一个需要再点击input出现树形去选

JQuery ztree 异步加载实践

本来要做一个文件目录浏览界面,需要遍历所有的文件和目录,很显然一次性读取时很费时费力的一件事情. 因此就需要做异步加载.... 不过网上的几篇帖子还挺坑的!原始参考:JQuery异步加载实例,相对来说这篇博客还算规整! 准备工作 1 JQuery ZTree,下载地址 复制其中的JS和CSS即可,其实没必要引那么多,用什么引什么就可以. 2 需要fastJSON,用来转换JSON对象,下载地址 我下载JAR包后,引入到Eclipse中总是报找不到class错误. 解决办法:把jar包放在WEB-

jQuery异步加载数据添加事件

几个月前在一个项目中涉及到树形栏,然后看了很多插件,觉得有点麻烦,于是自己写了一个,写着写着就出问题了.当时项目是通过树形栏进行权限控制的,管理员可以对从数据库去的数据动态生成树形栏进行增删改查操作,可是用$(".XX").click();方法是不行的.1.之前用的是jq1.4.3 ,jq1.7一下都可以使用live()方法,来实现该功能 $('#div').live('click',function(){ //do stuff }); 但是live方法也有不支持的事件,例如:togg

AngularJS(六):表单-复选框

本文也同步发表在我的公众号"我的天空" 复选框 复选框只有两个值:true或者false,因此在AngularJS中,一般都是将复选框的ng-model绑定为一个布尔值属性,通过这两个布尔值来决定其勾选状态,以及通过其勾选状态来设置被绑定的属性值为true或false.我们来看以下示例: <body ng-app="myApp" ng-controller="person">     <form ng-submit="

Jquery树控件ZTree异步加载

转载请注明出处:jiq?钦's technical Blog 异步加载的意思就是: 当点击展开树节点时,才去请求后台action返回点击节点的子节点数据并加载. 这里面主要设计ztree的setting变量的async属性设置: var setting = { async: { enable: true, url:"InitServiceIpsData.action", autoParam:["id", "name"], dataFilter: