Angular 2 树节点的上下移动问题
最近在做一个树节点的上下移动然后实现排序的问题。直接看图:

实现已选查询条件的上下移动。结合了primeng 的picklist 组件。
下面是html代码
<p-tabPanel header="查询条件">
<div class="row selfHeight" style="margin-left: 10px;">
<div class="col-4 selfHeight" style="padding: 0px;">
<div style="margin:0 0 10px 0">所有可选查询条件</div>
<div style="margin: 0px 6px;width: 100%">
<select class="select form-control radius selfHeight"
style="padding:0.2rem 0.75rem;height:30px;margin-left: -6px;width: 100%"
(change)="changeQueryConditionSelect($event.target.value)">
<option *ngFor="let values of selectData" value="{{values.attrGroupId}}">
{{values.attrGroupName}}
</option>
</select>
</div>
<p-tree [value]="leftQueryCondition" selectionMode="multiple" [(selection)]="selectLeftCondition"
(onNodeSelect)="queryConditionLeftNodeSelect($event)"
[style]="{'height':'calc(100% - 64px)','width':'100%','overflow':'auto','border-color':'#e0e0e0','color':'#333333','font-size':'13px'}">
</p-tree>
</div>
<div class="col-2" style="padding: 0px;margin-top: 120px;text-align: center">
<div style="margin-bottom: 10px">
<button type="button" class="btn btn-clickStyle radius pointer" (click)="moveRightCondition()">
<i class="fa fa-angle-double-right" aria-hidden="true"></i>
</button>
</div>
<div>
<button type="button" class="btn btn-clickStyle radius pointer" (click)="moveLeftCondition()">
<i class="fa fa-angle-double-left" aria-hidden="true"></i>
</button>
</div>
</div>
<div class="col-4 selfHeight" style="padding: 0px;">
<div style="margin:0 0 10px 0">已选查询条件</div>
<p-tree [value]="rightQueryCondition" selectionMode="multiple" [(selection)]="selectRightCondition"
(onNodeSelect)="queryConditionRightSelect($event)"
[style]="{'height':'calc(100% - 34px)','width':'100%','overflow':'auto','border-color':'#e0e0e0','color':'#333333','font-size':'13px'}">
<ng-template let-node pTemplate="default">
{{node.label}}
<select [(ngModel)]="node.symbol" type="text">
<option *ngFor="let values of operation" value="{{values.enumvalCode}}">{{values.enumvalName}}</option>
</select>
</ng-template>
</p-tree>
</div>
<div class="col-2" style="padding: 0px;margin-top: 120px;text-align: center">
<div style="margin-bottom: 10px">
<button type="button" class="btn btn-clickStyle radius pointer" (click)="moveUp()">
<i class="fa fa-angle-up" aria-hidden="true"></i>
</button>
</div>
<div>
<button type="button" class="btn btn-clickStyle radius pointer" (click)="moveDown()">
<i class="fa fa-angle-down" aria-hidden="true"></i>
</button>
</div>
</div>
</div> </p-tabPanel>
下面是ts代码:
moveUp() { //右侧选只选中一个时才能移动
if (this.selectRightCondition && this.selectRightCondition.length==1) {
let data = this.rightQueryCondition;
let index = 0;
data.forEach((record, i) => {
if (record['fieldCode'] === this.selectRightCondition[0]['fieldCode']) {
return index = i;
}
})
var temp;
if (index === 0 || index > data.length - 1) {
this.rightQueryCondition = data;
} else {
temp = data[index];
data[index] = data[index - 1];
data[index - 1] = temp;
this.rightQueryCondition = data;
}
}
}
moveDown() {
if (this.selectRightCondition && this.selectRightCondition.length==1) {
let data = this.rightQueryCondition;
let index = 0;
data.forEach((record, i) => {
if (record['fieldCode'] === this.selectRightCondition[0]['fieldCode']) {
return index = i;
}
})
var temp;
if (index === data.length - 1 || index < 0) {
this.rightQueryCondition = data;
} else {
temp = data[index];
data[index] = data[index + 1];
data[index + 1] = temp;
this.rightQueryCondition = data;
}
}
}
Angular 2 树节点的上下移动问题的更多相关文章
- js 查找树节点 数组去重
//查找树节点function findData(curOrg, id) { var array = []; if ((typeof curOrg == 'object') && (c ...
- 展开easyui 树节点到某个点
$(function () { $('#tt').tree({ url: '/IS/Department/JsonTree?companyID=@(Request.QueryString[" ...
- JPA,EclipseLink 缓存机制学习(一) 树节点搜索问题引发的思考
最近在项目在使用JPA+EclipseLink 的方式进行开发,其中EclipseLink使用版本为2.5.1.遇到一些缓存方面使用不当造成的问题,从本篇开始逐步学习EclipseLink的缓存机制. ...
- ligerui_ligerTree_005_动态增加“树”节点
动态添加ligerTree节点:效果图: 源码地址:http://download.csdn.net/detail/poiuy1991719/8571255 <%@ page language= ...
- ext 树节点操作
ext 树节点操作 tree :树 node:节点 1.全部展开 tree.expandAll(); 2.全部收缩 tree.collapseAll(); 3.得到父节点 node.parent ...
- Extjs整体加载树节点
Ext.onReady(function () { Ext.define('company', { extend: 'Ext.data.Mode ...
- ExtJs 4.2 treePanel 点击树节点 传送参数到后台(多个参数)
//***********************************************左边树开始********************************************** ...
- 问题-在TreeView使用时,发现选中的树节点会闪烁或消失
问题:在工程中选中一个树节点,鼠标焦点在树上,做某种操作时发现选中的点会消失?原因:如果只是BeginUpdate后,没有调用EndUpdate,树会全空.应该是BeginUpdate方法会刷新树,但 ...
- easyui-treegrid移除树节点出错
easyui-treegrid移除树节点出错 >>>>>>>>>>>>>>>>>>>& ...
随机推荐
- Sharepoint JSCOM 列表操作
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', retrieveListItemsInclude); //确保js文件加载,再执行方法 function ...
- java程序调用.net接口服务地址的写法
参考文章:http://download.csdn.net/detail/davidiao/7424767 http://www.cnblogs.com/mq0036/p/3554002.html . ...
- 插入po得到主键,插入sql得到主键
import com.yd.common.data.CIPPageInfo; import com.yd.common.data.CIPReqCondition; import com.yd.comm ...
- Java文件与io——打印流和对象流
打印流的主要功能是用于输出,在整个IO包中打印流分为两种类型: 字节打印流:PrintStream 字符打印流:PrintWriter 打印流可以很方便的进行输出 public class Print ...
- Asp.NetCore 从控制台到WebApi
一.新建一个.NetCore控制台程序 二.添加依赖项 三.添加Startup.cs文件 using Microsoft.AspNetCore.Builder; using Microsoft.Asp ...
- 【Java密码学】用Java数字签名提供XML安全
简介 众所周知,XML在产品和项目开发中起着非常重要的作用.通过XML文档可以获取很多信息,还可以使用XML文件进行CRUD(增加.查询.更新和删除)操作.然而值得注意的是,我们如何确保XML中的数据 ...
- Hibernate基础案例1
使用到的是MySQL数据库 1.在项目中先引入jar包,并添加引用 <dependencies> <dependency> <groupId>junit</g ...
- TemplateBinding与Binding区别,以及WPF自定义控件开发的遭遇
在上一次的文章WPF OnApplyTemplate 不执行 或者执行滞后的疑惑谈到怎么正确的开发自定义控件,我们控件的样式中,属性的绑定一般都是用TemplateBinding来完成,如下一个基本的 ...
- ios MBProgressHUD 使用,及二次封装
MBProgressHUD是一个显示HUD窗口的第三方类库,用于在执行一些后台任务时,在程序中显示一个表示进度的loading视图和两个可选的文本提示的HUD窗口.MBProgressHUD 二次封装 ...
- JQuery初识(三 )
一丶JQuery的文档操作 1.插入操作: 父元素.append(子元素) 解释:追加某元素,在父元素中添加新的子元素.子元素可以为:stirng|element(js对象)|JQuery元素 var ...