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 相关文章推荐
javascript事件模型代码
Jul 01 Javascript
js加解密 脚本解密
Feb 22 Javascript
JavaScript 三种不同位置代码的写法
Oct 25 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
Jan 10 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
Javascript基础教程之break和continue语句
Jan 18 Javascript
js实时获取并显示当前时间的方法
Jul 31 Javascript
如何实现JavaScript动态加载CSS和JS文件
Dec 28 Javascript
使用JQuery中的trim()方法去掉前后空格
Sep 16 Javascript
单行 JS 实现移动端金钱格式的输入规则
May 22 Javascript
node.js开发辅助工具nodemon安装与配置详解
Feb 06 Javascript
Vue中watch、computed、updated三者的区别及用法
Jul 27 Javascript
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
谈谈关于php的优点与缺点
2013/04/11 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
举例介绍Python中的25个隐藏特性
2015/03/30 Python
Python下Fabric的简单部署方法
2015/07/14 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
python中退出多层循环的方法
2018/11/27 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
一套PHP的笔试题
2013/05/31 面试题
超市中秋节促销方案
2014/03/21 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书