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 相关文章推荐
有关DOM元素与事件的3个谜题
Nov 11 Javascript
浏览器解析js生成的html出现样式问题的解决方法
Apr 16 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
Mar 29 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
Mar 21 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
Feb 06 Javascript
Vue.js结合bootstrap实现分页控件
Mar 10 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
May 23 Javascript
JavaScript学习笔记之DOM基础操作实例小结
Jan 09 Javascript
jQuery简单实现根据日期计算星期几的方法
Jan 09 jQuery
详解 微信小程序开发框架(MINA)
May 17 Javascript
微信小程序swiper使用网络图片不显示问题解决
Dec 13 Javascript
js中Object.create实例用法详解
Oct 05 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
十天学会php(2)
2006/10/09 PHP
php下使用SMTP发邮件的代码
2008/01/10 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
python使用matplotlib绘制折线图教程
2017/02/08 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
python二元表达式用法
2019/12/04 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
帮一个朋友写的求职信
2014/08/09 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
解析Redis Cluster原理
2021/06/21 Redis