一. 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选择框的更多相关文章

  1. jeecg3.7中DictSelect数据字典下拉选择框的用法

    1.参数 属性名                      类型        描述                                                           ...

  2. Angularjs中比较实用的DateFormat库

    angular.module('newApp') .factory('dateUtil', function() { var symbolMap = { 'MM': function(date) { ...

  3. AngularJS Select(选择框)

    AngularJS 可以使用数组或对象创建一个下拉列表选项. 使用 ng-option 创建选择框 在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和 ...

  4. AngularJS(6)-选择框Select

    1.在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出 <!DOCTYPE html> <html lang=" ...

  5. AngularJS初始化Select选择框

    一.引入 之前一个离职的同事负责的项目大量的引入了AngularJS的JS框架,后来我接手相关他项目里的功能.由于对AngularJS不是太熟,在他的功能上进行二次开发就比较费劲了,印象比较深的一个就 ...

  6. angularjs中的单选框绑定数据注意事项

    这里说的是angularjs 1.x 在实现单选框时,我们完全可以用html自带的<input type="radio"/>,但是配合angularjs 中的双向绑定, ...

  7. ionic 下拉选择框中默认显示传入的参数

    开发过程当中遇到一个有趣的问题,如果我在第一个页面需要把 item { "ownerId" : 1 } 传递给第二个页面,并挂在$scope下 $scope.item = $sta ...

  8. AngularJS学习之Select(选择框)

    1.AngularJS可以使用数组或对象创建一个下拉列表选项: 2.在AngularJS中我们可以使用ng-option指令创建一个下拉列表:列表项通过对象和数组循环输出: <div ng-ap ...

  9. cocos2dx2.2.2登录场景中Checkbox选择框的实现

    在前两篇文章中,我们介绍了在注册场景中需要用到的输入框及弹出框的实现方式,这两篇文章中介绍的内容在登录场景同样会用到.而我们经常会在登录场景中见到的另一种元素就是自动登录或者记住密码的Checkbox ...

随机推荐

  1. Android 性能优化(15)网络优化( 11)Manipulating Broadcast Receivers On Demand

    Manipulating Broadcast Receivers On Demand This lesson teaches you to Toggle and Cascade State Chang ...

  2. Android 性能优化(4)Optimizing Layout Hierarchies:用Hierarchy Viewer和Layoutopt优化布局

    Optimizing Layout Hierarchies This lesson teaches you to Inspect Your Layout Revise Your Layout Use ...

  3. PAT甲级考前整理(2019年3月备考)之二,持续更新中.....

    PAT甲级考前整理之一网址:https://www.cnblogs.com/jlyg/p/7525244.html,主要总结了前面131题的类型以及易错题及坑点. PAT甲级考前整理三网址:https ...

  4. (转)Hibernate框架基础——一对多关联关系映射

    http://blog.csdn.net/yerenyuan_pku/article/details/52746413 上一篇文章Hibernate框架基础——映射集合属性详细讲解的是值类型的集合(即 ...

  5. 关于ORB SLAM2资源整理(持续更新)

    ORB SLAM2源码讲解(吴博) https://www.youtube.com/watch?v=2GVE7FTW7AU 泡泡机器人视频整理: http://space.bilibili.com/3 ...

  6. Getting start with dbus in systemd (01) - Interface, method, path

    Getting start with dbus in systemd (01) 基本概念 几个概念 dbus name: connetion: 如下,第一行,看到的就是 "dbus name ...

  7. Java排序算法全

    目录 Java排序算法代码 零. 排序基类 一. 选择排序 二. 插入排序 三. 希尔排序 四. 归并排序 1. 自顶向下 2. 自底向上 五. 快速排序 1. 基本版 2. 双路切分版 3. 三路切 ...

  8. 利用gsoap库封装易用的rest框架

    c++缺少web开发的框架,web框架分为异步和同步,异步的业务逻辑控制需要较强功底,同步代码实现起来容易,利于阅读理解 1.gsoap是c++写的webservice库,webservice应用层也 ...

  9. C++字符串处理函数总结

    1.基础函数输入输出:cin,cout,getchar,gets,putchar,puts,printf,scanf格式化:sprintf,sprintf_s,wsprintf,wsprintf_s, ...

  10. localStorage前端存储数据

    <!DOCTYPE html> <html> <head> <title>localStorage演示</title> <meta c ...