angularjs中比较实用的multipleselect选择框
一. HTML
HTML中比较多逻辑代码,修改的时候要注意修改很多绑值的地方。
<div class="form-group">
<label class="col-lg-3 control-label">组织权限</label>
<div ng-init="enablePids = [];disablePids = [];">
<div class="col-lg-6" style="min-height:200px;margin-top:10px;margin-bottom:10px;">
<div class="col-sm-5" style="padding-left: 0px">
<select multiple="multiple" size="12"
style="min-width:150px; height:200px;background-color:#fff; " class="form-control"
ng-options="id as (privilegeNameFromId(id)) for id in removeArray(uiTemplateData.privilege_ids, entity.privilege)"
ng-model="disablePids"
name="unSelectedPrivilegeForOrganization"
ng-dblclick="entity.privilege =
entity.privilege.concat(disablePids);disablePids = []">
</select>
</div>
<div class="col-sm-2">
<br/><br/>
<button class="btn btn-default"
ng-click="entity.privilege =
entity.privilege.concat(disablePids);disablePids = []">>>
</button>
<br/><br/><br/>
<button class="btn btn-default"
ng-click="entity.privilege =
removeArray(entity.privilege, enablePids);enablePids = []"><<
</button>
</div>
<div class="col-sm-5" style="padding-right: 0px">
<select style="min-width:150px; height:200px; background-color:#fff;" class="form-control"
multiple="multiple"
size=12
name="SelectedPrivilegeForOrganization"
ng-options="id as (privilegeNameFromId(id)) for id in entity.privilege"
ng-model="enablePids"
ng-dblclick="entity.privilege =
removeArray(entity.privilege, enablePids);enablePids = []">
</select>
<input name="hasSelectedPrivilegeForOrganization"
ng-model="hasSelectedPrivilegeForOrganization" required ng-show="false">
<ul class="parsley-errors-list filled"
ng-show="form.hasSelectedPrivilegeForOrganization.$invalid
&& (form.unSelectedPrivilegeForOrganization.$dirty
|| form.SelectedPrivilegeForOrganization.$dirty || vertified)">
<li class="parsley-required">不能为空</li>
</ul>
</div>
</div>
</div>
</div>
二. JS
1. 先给出绑值的ngModel
$scope.entity = {
privilege: []
}
2. 显示值得ngModel
$scope.uiTemplateData = {
privileges: [],
privilege_ids: [],
}
3. 主要处理逻辑
(1)先发API请求数据回来后加到存值的地方。
(2)处理显示出来的Name
(3)该插件处理值只操作ID
function requestPrivilegeList(){
if (!isEditState){
DS.privilegeList({limit:2000, index:1}).then(function () {
var privileges = DS.data.unpermissions;
$scope.uiTemplateData.privileges = privileges;
var privilege_ids = [];
for (var index in privileges) {
var privilege = privileges[index];
privilege_ids.push(privilege.value);
}
$scope.uiTemplateData.privilege_ids = privilege_ids;
})
}
}
requestPrivilegeList();
$scope.privilegeNameFromId = function (id) {
var array = $scope.uiTemplateData.privileges;
for (index in array) {
var privilege = array[index];
if (privilege.value === id) {
return privilege.display_value;
}
}
return "Unknown";
}
$scope.removeArray = function (originalArray, removedArray) {
var resultArray = [];
for (var i = 0, k = 0; i < originalArray.length; i++) {
var finded = false;
var value = originalArray[i];
var length = removedArray === undefined ? 0 : removedArray.length;
for (k = 0; k < length; k++) {
if (value === removedArray[k]) {
finded = true;
break;
}
}
if (!finded) {
resultArray.push(originalArray[i]);
}
}
return resultArray;
}
$scope.hasSelectedPrivilegeForOrganization = 'true';
$scope.$watch('entity.privilege', function() {
var ids = $scope.entity.privilege;
if (ids && ids.length > 0) {
$scope.hasSelectedPrivilegeForOrganization = 'true';
return;
}
$scope.hasSelectedPrivilegeForOrganization = '';
})
angularjs中比较实用的multipleselect选择框的更多相关文章
- jeecg3.7中DictSelect数据字典下拉选择框的用法
1.参数 属性名 类型 描述 ...
- Angularjs中比较实用的DateFormat库
angular.module('newApp') .factory('dateUtil', function() { var symbolMap = { 'MM': function(date) { ...
- AngularJS Select(选择框)
AngularJS 可以使用数组或对象创建一个下拉列表选项. 使用 ng-option 创建选择框 在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和 ...
- AngularJS(6)-选择框Select
1.在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出 <!DOCTYPE html> <html lang=" ...
- AngularJS初始化Select选择框
一.引入 之前一个离职的同事负责的项目大量的引入了AngularJS的JS框架,后来我接手相关他项目里的功能.由于对AngularJS不是太熟,在他的功能上进行二次开发就比较费劲了,印象比较深的一个就 ...
- angularjs中的单选框绑定数据注意事项
这里说的是angularjs 1.x 在实现单选框时,我们完全可以用html自带的<input type="radio"/>,但是配合angularjs 中的双向绑定, ...
- ionic 下拉选择框中默认显示传入的参数
开发过程当中遇到一个有趣的问题,如果我在第一个页面需要把 item { "ownerId" : 1 } 传递给第二个页面,并挂在$scope下 $scope.item = $sta ...
- AngularJS学习之Select(选择框)
1.AngularJS可以使用数组或对象创建一个下拉列表选项: 2.在AngularJS中我们可以使用ng-option指令创建一个下拉列表:列表项通过对象和数组循环输出: <div ng-ap ...
- cocos2dx2.2.2登录场景中Checkbox选择框的实现
在前两篇文章中,我们介绍了在注册场景中需要用到的输入框及弹出框的实现方式,这两篇文章中介绍的内容在登录场景同样会用到.而我们经常会在登录场景中见到的另一种元素就是自动登录或者记住密码的Checkbox ...
随机推荐
- 二分+RMQ/双端队列/尺取法 HDOJ 5289 Assignment
题目传送门 /* 题意:问有几个区间最大值-最小值 < k 解法1:枚举左端点,二分右端点,用RMQ(或树状数组)求区间最值,O(nlog(n))复杂度 解法2:用单调队列维护最值,O(n)复杂 ...
- error: no such device : 76de62ec-ac60-4c4d-bb Entering rescue mode .. grub resuce>(系统硬盘驱动器MBR已损坏)问题解决办法(图文详解)
问题详情 近期,由于博主我,担任实验室整个大数据集群的leader,突然的断电给整个集群造成,如下的情况问题.(欲哭无泪,我的各种服务啊) 解决办法 第一种方法:尝试,直接重启机器(我这里是台式机 ...
- kafka启动时出现FATAL Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer) java.io.IOException: Permission denied错误解决办法(图文详解)
首先,说明,我kafk的server.properties是 kafka的server.properties配置文件参考示范(图文详解)(多种方式) 问题详情 然后,我启动时,出现如下 [hadoop ...
- 2105. [NOIP2015] 信息传递
★☆ 输入文件:2015message.in 输出文件:2015message.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述] 有n个同学(编号为1到n)正在 ...
- 前端er怎样操作剪切复制以及禁止复制+破解等
前言 有时候我们经常会碰到这些场景:玩掘金.知乎的时候复制一段文字,总是会在内容后面加上一些版权信息,以及像小说网站等都有禁止选中,禁止复制这种功能,还有点击自动复制账号的功能. 我也经常遇到这些场景 ...
- webSql的简单小例子
初始化websql数据库的参数信息 var config = { name: 'my_plan', version: '', desc: 'manage my plans', size: 20 * 1 ...
- java多线程之内存的可见性介绍(备用1)
(仅供参考) a.共享变量的可见能够一定程度保证线程安全,共享变量不可见导致数据不够准确,出现各种各样的问题,导致线程不安全. b.不同线程之间无法直接访问其他线程工作内存中的变量. 1.可见性 2. ...
- 北大ACM(POJ1020-Anniversary Cake)
Question:http://poj.org/problem?id=1020 问题点:DFS. Memory: 260K Time: 47MS Language: C++ Result: Accep ...
- GPC:使用GPC计算intersection容易出现的问题
在使用GPC计算多边形的交的时候,出现问题 //1.2. 另一种方法,判断新的多边形是否和老多边形相交 Poly cross = (PolyDefault) Clip.intersection ...
- 计算机网络(二)--HTTP详解
Web相关内容都是存储在Web服务器上,Web服务器上使用的是http协议,因此也被成为http服务器.http的client.server构成了万维网的 基本组件 一.资源 1.URI: 统一资源标 ...