ionic3自定义segment组件

首先爆一个Bug:

极光推送收到通知,点击通知后,使用setRoot(page)方法设置导航控制器A的root页面,则A中的所有segment组件不切换。感觉上是html中动态值和ts中对应值绑定被解除了。

附:定义变量i,并使用setinterval定时器i++,,然后在前台输出{{i}}。在打开通知后,这个i还是能够定时累加输出的,并且,每次刷新都会顺带把type也刷新一遍。

上自定义segment的相关代码:

最终效果图

exx-segment.html

<div class="exxSegment">
  <a class="item" *ngFor="let item of exxoption;let i=index;" (click)="select(item,$event)" [class.segactive]="item.value==exxselect"> {{item.name}} </a>
</div>

exx-segment.ts

import { Component, Input, Output, EventEmitter } from '@angular/core';

/**
 * Generated class for the ExxSegmentComponent component.
 *
 * See https://angular.io/api/core/Component for more info on Angular
 * Components.
 */
@Component({
  selector: 'exx-segment',
  templateUrl: 'exx-segment.html'
})

export class ExxSegmentComponent {
  @Input("exxoption")
  exxoption: Array<any> = [];

  @Input("exxselect")
  exxselect: string;

  @Output("exxclick")
  exxclick: EventEmitter<string> = new EventEmitter();

  constructor() {
  }

  select(item, event) {
    // console.log(event);
    let items = event.target.parentElement.getElementsByClassName("item");
    Object.keys(items).map((key) => {
      items[key].classList.remove("segactive");
    });
    event.target.classList.add("segactive");
    this.exxclick.emit(item.value);
  }
}

exx-segment.scss

exx-segment {
    .exxSegment{ width: 100%; max-height: 100%; overflow: hidden; display: flex; display: -webkit-flex; /* Safari */ flex-direction: row; justify-content:space-around;}
    .exxSegment .item{ text-decoration: none; color: #b2b2b2; flex: 1; text-align: center; height: 80%; display: block; font-size: 1.2rem;height: 3.2rem;line-height: 3rem;}
    .exxSegment .item.segactive{ border-bottom: 2px solid #f4f4f4; color: #fff;}
}

调用方式:

1、html
<exx-segment (exxclick)="changeMode($event)" [exxoption]="dataSegment" [exxselect]="type"></exx-segment>
2、配置
  public dataSegment = [
    { name: '项目1', value: 'item1' },
    { name: '项目2', value: 'item2' }
  ];
3、exx-segment.modeule.ts导入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT飞牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值