AngularJS2中一种button切换效果的实现方法(二)


Posted in Javascript onMarch 27, 2017

AngularJS2中一种button切换效果的实现方法(二)

之前用三目表达式和ng-class实现了按钮切换效果,似乎达到了我的预期,但是我觉得还有改进空间,网上找了一些资料,大概还有以下几种实现方式:

路由

<button class="btn1" routerLink="component1" routerLinkActive="active" type="submit">btn1</button>
<button class="btn2" routerLink="component2" routerLinkActive="active" type="submit">btn2</button>
.active {
 background-color: white;
}

将button切换的页面写成一个component,通过routerLink链接到对应的component并显示出来,routerLinkActive来控制路由链接激活后button的样式应用的class。

但是这个有局限性,适合button按下去后,整个页面会有大幅变化的应用场景,那么还有其他方法吗?答案是肯定的。

[class]与(click)

还是通过ngclass和ngclick配合,不过方法和之前写的略有不同。

字符串数组形式

<button [class]="{true:'btn1',false:'btn2'}[isChange]" (click)="isChange=true">btn1</button>
<button [class]="{false:'btn1',true:'btn2'}[isChange]" (click)="isChange=false" >btn2</button>
.btn1{
 width: 120px;
 height: 43px;
 border: 1px solid #EEEEEE;
 background: white;
 border-bottom: none;
 text-align: center;
}
.btn2{
 border: 1px solid #EEEEEE;
 border-top: 2px solid #238FF9;
 width: 120px;
 height: 42px;
 background: white;
 border-bottom: none;
 text-align: center;
}

字符串数组形式是针对class简单变化,具有排斥性的变化,true是什么class,false是什么class。若要设置初识状态的class,可以在component中的构造函数中预先赋值。

对象key/value处理

<button [class]="{'one':'btn1','two':'btn2','three':'btn3','four':'btn4'}[isChange]" (click)="isChange='one'">btn1</button>
 <button [class]="{'one':'btn1','two':'btn2','three':'btn3','four':'btn4'}[isChange]" (click)="isChange='two'">btn2</button>
 <button [class]="{'one':'btn1','two':'btn2','three':'btn3','four':'btn4'}[isChange]" (click)="isChange='three'">btn3</button>
 <button [class]="{'one':'btn1','two':'btn2','three':'btn3','four':'btn4'}[isChange]" (click)="isChange='four'">btn4</button>

这种方法可以对多个对象赋不同的class。或者可以实现多个button互斥性变化:

<button [class]="{'one':'btn1','two':'btn2','three':'btn2','four':'btn2'}[isChange]" (click)="isChange='one'">btn1</button>
 <button [class]="{'one':'btn2','two':'btn1','three':'btn2','four':'btn2'}[isChange]" (click)="isChange='two'">btn2</button>
 <button [class]="{'one':'btn2','two':'btn2','three':'btn1','four':'btn2'}[isChange]" (click)="isChange='three'">btn3</button>
 <button [class]="{'one':'btn2','two':'btn2','three':'btn2','four':'btn1'}[

以上所述是小编给大家介绍的AngularJS2中一种button切换效果的实现方法(二),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery得到iframe src属性值的方法
Sep 25 Javascript
通过JS判断联网类型和连接状态的实现代码
Apr 01 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
Sep 22 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
Dec 02 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
Jan 23 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
用Axios Element实现全局的请求loading的方法
Mar 15 Javascript
通过vue-cli3构建一个SSR应用程序的方法
Sep 13 Javascript
javascript实现计算指定范围内的质数示例
Dec 29 Javascript
关于vue项目中搜索节流的实现代码
Sep 17 Javascript
JavaScript组合模式---引入案例分析
May 23 Javascript
详解Howler.js Web音频播放终极解决方案
Aug 23 Javascript
使用AngularJS2中的指令实现按钮的切换效果
Mar 27 #Javascript
详解VUE的状态控制与延时加载刷新
Mar 27 #Javascript
vue2.0实战之使用vue-cli搭建项目(2)
Mar 27 #Javascript
js实现三级联动效果(简单易懂)
Mar 27 #Javascript
JS数组去重(4种方法)
Mar 27 #Javascript
JS实现隔行换色的表格排序
Mar 27 #Javascript
JavaScript实现获取远程的html到当前页面中
Mar 26 #Javascript
You might like
DSP接收机前端设想
2021/03/02 无线电
php结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
python中的列表推导浅析
2014/04/26 Python
python创建关联数组(字典)的方法
2015/05/04 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
详解flask入门模板引擎
2018/07/18 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
EJB的几种类型
2012/08/15 面试题
社区国庆节活动方案
2014/02/05 职场文书
开学典礼策划方案
2014/05/28 职场文书
质量负责人任命书
2014/06/06 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
教师群众路线心得体会
2014/11/04 职场文书
董事长秘书工作总结
2015/08/14 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis