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

 更新时间:2017年03月27日 09:32:40   投稿:mrr  
这篇文章主要介绍了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切换效果的实现方法(二),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • angular中的observable问题

    angular中的observable问题

    这篇文章主要介绍了angular中的observable问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Angularjs修改密码的实例代码

    Angularjs修改密码的实例代码

    这篇文章主要介绍了Angularjs修改密码的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-05-05
  • AngularJS 将再发布一个重要版本 然后进入长期支持阶段

    AngularJS 将再发布一个重要版本 然后进入长期支持阶段

    目前团队正在开发 AngularJS 1.7.0,而 1.7 的开发周期将一直持续到 2018 年 6 月 30 日
    2018-01-01
  • Augularjs-起步详解

    Augularjs-起步详解

    下面小编就为大家带来一篇Augularjs-起步详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • AngularJS基础 ng-class-odd 指令示例

    AngularJS基础 ng-class-odd 指令示例

    本文主要介绍AngularJS ng-class-odd 指令,这里对ng-class-odd基础知识做了详细整理,并有示例代码和效果图,学习AngularJS的同学可以参考下
    2016-08-08
  • 详解angular2封装material2对话框组件

    详解angular2封装material2对话框组件

    本篇文章主要介绍了详解angular2封装material2对话框组件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 详解使用路由延迟加载 Angular 模块

    详解使用路由延迟加载 Angular 模块

    这篇文章主要介绍了详解使用路由延迟加载 Angular 模块,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Angular实现的简单定时器功能示例

    Angular实现的简单定时器功能示例

    这篇文章主要介绍了Angular实现的简单定时器功能,结合实例形式分析了AngularJS定时器功能的简单实现与使用技巧,需要的朋友可以参考下
    2017-12-12
  • Angular.JS中指令ng-if的注意事项小结

    Angular.JS中指令ng-if的注意事项小结

    这篇文章主要给大家分享了关于Angular.JS中指令ng-if的一点注意事项,分享出来供大家参考学习,文中介绍的还是相对来说比较详细,对大家具有一定的参考借鉴价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • 微信小程序实现左右联动的实战记录

    微信小程序实现左右联动的实战记录

    联动菜单是大家在开发小程序经常会遇到的一个功能,下面这篇文章主要给大家介绍了关于微信小程序实现左右联动的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-07-07

最新评论