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 数组克隆方法 小结
Mar 20 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 06 Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 Javascript
JS获取各种宽度、高度的简单介绍
Dec 19 Javascript
jQuery使用addClass()方法给元素添加多个class样式
Mar 26 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
Jun 25 Javascript
javascript实现列表滚动的方法
Jul 30 Javascript
javascript单页面手势滑屏切换原理详解
Mar 21 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
Jul 06 Javascript
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
Vue-router路由判断页面未登录跳转到登录页面的实例
Oct 26 Javascript
vue2过滤器模糊查询方法
Sep 16 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
如何编写高质量JS代码
2014/12/28 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
python文件选择对话框的操作方法
2019/06/27 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
高中生校园生活自我评价
2013/09/19 职场文书
网络教育自我鉴定
2014/02/04 职场文书
预备党员政审材料
2014/02/04 职场文书
教师自我反思材料
2014/02/14 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
开业典礼主持词
2014/03/21 职场文书
商铺租赁意向书
2014/04/01 职场文书
党员十八大心得体会
2014/09/12 职场文书
收款授权委托书
2014/10/02 职场文书
个人业务学习心得体会
2016/01/25 职场文书