Angularjs单选改为多选的开发过程及问题解析


Posted in Javascript onFebruary 17, 2017

很简单的需求:之前下拉框是单选,现在想改为多选。

开发过程:

问题一:自己首先想到的是网上找个example,发现貌似AngularJS有相应的js包来实现,其中最多的就是isteven-multi-selectangularjs-dropdown-multiselect等。

我下载了,但是套到自己项目里面,是在是难看的很。而且貌似这些js包耦合性很高,不是我想要的那种,所以还是打算用简单的md-select、md-option、md-checkbox

来实现我想要的效果,又不想写的太人工,所以就查angularjs的一些控件demo,最后果然发现了我想要的。

https://material.angularjs.org/1.1.3/demo/select

于是我就开始往项目里套,但是怎么套,都出不了demo上的样式,多选是能多选了,但是没有像checkbox那种正方形选择框,各种百度各种google,就是不知道什么原因。本来打算都要放弃了,但是这么好的demo,这么省事的js,不忍心放弃啊,再说放弃也找不到其他比较合适的而又不显突兀的样式。于是耐下心来一遍遍的去看setting,所有的都没问题,除了版本不一致。难道?我的第六感告诉我,或许真的是版本原因。之前用的版本是"angular-material": "1.0.0-rc2",改用最新版本"angular-material": "1.1.3",于是,效果出来了,真的是版本原因,容我默默的在卫生间哭一会儿。

问题二:样式的问题解决了,离成功不远了。想做个多选效果,因为选项实在是很多,没有多选实在是体验不好。于是就用其中的一个option来做全选,但是不知道option都有什么事件,找不到相应的属性说明文档,只有一个checked属性,但是在js里面又不知道如何判断checked还是没有checked,最后还是放弃了,最上面做了个按钮,搞定。

问题三:还有个问题,就是更新"angular-material": "1.1.3"版本之后,似乎md-input-Container label长度过长的话,就显示3Dot(...)了,而之前是可以换行显示的,感觉这个体验完全不如之前版本的体验。网上google了好久也没google出来这样修正的好处,于是果断自定义css,改回原来的样式。

涉及到的部分代码:

html:

<md-input-container flex="35" class="md-input-has-value"> 
                    <label>产品类型</label> 
                    <md-select ng-model="params.productType" md-on-close="clearSearchTerm()" ng-change="change(params.productType)" data-md-container-class="selectHeader" multiple> 
                      <div> 
                        <button ng-click="pTCheckNone()" class="md-button md-ink-ripple"><i class="zmdi zmdi-undo ng-scope"></i>重置</button> 
                      </div> 
                      <md-select-header class="select-header"> 
                        <input ng-model="searchTerm" type="search" placeholder="Search for a product.." class="header-searchbox md-text" > 
                      </md-select-header> 
                      <md-optgroup label="productTypes"> 
                        <md-option value="{{item.key}}" ng-repeat="item in productTypes | filter:searchTerm">{{item.value}}</md-option> 
                      </md-optgroup> 
                    </md-select> 
                  </md-input-container>

js:

$scope.productTypes = [ 
   {"key":"SecureSiteProEV1", "value":"product1"}, 
   {"key":"SecureSiteProEV2", "value":"product2"}, 
   {"key":"SecureSiteProEV3", "value":"product3"}, 
   {"key":"SecureSiteProEV4", "value":"product4"}, 
   {"key":"SecureSiteProEV5", "value":"product5"}];

css

md-input-container label:not(.md-no-float):not(.md-container-ignore), 
md-input-container .md-placeholder { 
  white-space: normal; 
}
Javascript 相关文章推荐
离开页面时检测表单元素是否被修改,提示保存的js代码
Aug 25 Javascript
JavaScript EasyPager 分页函数
May 25 Javascript
json的前台操作和后台操作实现代码
Jan 20 Javascript
javascript 在firebug调试时用console.log的方法
May 10 Javascript
学习JavaScript设计模式(代理模式)
Dec 03 Javascript
jQuery入门之层次选择器实例简析
Dec 11 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 Javascript
浅谈Node.js:fs文件系统模块
Dec 08 Javascript
Bootstrap BootstrapDialog使用详解
Feb 17 Javascript
JS实现图片手风琴效果
Apr 17 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
jQuery实现基本动画效果的方法详解
Sep 06 jQuery
javascript基础知识之html5轮播图实例讲解(44)
Feb 17 #Javascript
javascript ES6中箭头函数注意细节小结
Feb 17 #Javascript
数组Array的排序sort方法
Feb 17 #Javascript
Bootstrap BootstrapDialog使用详解
Feb 17 #Javascript
数组Array的一些方法(总结)
Feb 17 #Javascript
深入理解javascript的getTime()方法
Feb 16 #Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
Feb 16 #Javascript
You might like
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
理解JavaScript中的事件
2006/09/23 Javascript
js jquery做的图片连续滚动代码
2008/01/06 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
python实现端口转发器的方法
2015/03/13 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
django实现分页的方法
2015/05/26 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
Python模块文件结构代码详解
2018/02/03 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
对照四风自我剖析材料
2014/10/07 职场文书
简单租房协议书
2014/10/21 职场文书
清明节寄语2015
2015/03/23 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
2015年保管员工作总结
2015/04/30 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL