zoukankan      html  css  js  c++  java
  • Ionic2学习笔记

    Component

    nav:

    <ion-nav [root] = 'rootComponent'></ion-nav>
    ....
    import {Nav} from 'ionic-angular';
    .... export class AppComponent{   @ViewChild(Nav) private nav:Nav;   push(){     nav.push(PageOne,{id:1,name:'ztw'});   }   } @Component({template:`<p>{{show}}</p><button (click)='goBack()'> back</button>`}) export class PageOne{   show:string   constructor(     private:navParams:NavParams,     private:navCtrl:NavController          ){}   ngOnInit(){     let name:string=navParams.get(name);     let id:number=+navParams.get(id);     this.show=`name : ${name} , id: ${id}`;   };   goBack(){     this.navCtrl.pop(); //this.navCtrl.popToRoot(); 回到root   } }
    可以通过@ViewChild(Nav)navCtrl,访问内部属性;

    navCtrl.setRoot(component:Component) ;  //其实等同于rootComponent=component ;

        .pop();              //等同于new ViewController().dismiss();

        .push(component, {param:value} ,...);            //通过 new NavParams().get(param)获得

        .insert(index,component,{param:value},...);

    Menu:

    <ion-menu [content]='content' silde='right' id='authenticated'> 
        <button menuClose> close</button>
        <button menuOpen>open</button>
      <button menuToggle>toggle</button> </ion-menu>
    <ion-menu silde='left' id='unauthenticated'> </ion-menu> <nav-ion #content> <nav-ion>

    属性:

    import {MenuControll} from 'ionic-angular';

    new MenuControll().open() 

              .close()

              .toggle('left')   ;//多个menu,且不在同一位置时,可使用位置来控制;

              .enable(ture,'authenticated');  //多个menu时,以ID来控制。

    ViewController:

      属性:

          willEnter;  ngOnChanges

          didEnter ;   ngOnInit

          willLeave;  before unActive

          didLeave; after  unActive

          willUnload;  after ngOnDestroy;

            // all return Observable ;使用:

    this.viewCtrl.didEnter.subscribe(val=>{console.log('didEnter')});
    

      事件:

          onDidDismiss();OnWillDismiss();

      方法:

          dismiss();

          .....

     alerts:

     

    let alertCtrl=new AlertController();
    alertCtrl.create({
       title:'alert msn',
       message:' msn'
       buttons:[
        {text:' ok' ,
          hanlder:data=>{console.log(data)},
         }] , inputs:[ {type:'text',name:'name',placeholder:'account'}, ] })

      类似于绑定了一个#form='ngForm' 或者 [fromGroup]='form';

      而每个button的hanlder中返回的data,则为form.value;

     Config:

      

    import {IonicModule} from 'ionic-angular';
    
    @NgModule({
    
       imports:[
          IonicModule.forRoot(MyApp,opt,DeepLinkers) 
        ] 
    })
    

      opt={ iocnMode:'ios'   ,  modelEnter:'model-silde-in'};

    DeepLinkers;

        Ionic2中的页面导航不显示在URL上。

        而在DeepLinkers中设置了的component,可以在url上导航,as a breadCrumb。

        DeepLinkers={ links:[{component:PageComponent,name:'page' , segment : 'pageOne' , defualtHistory:'HomePage'}]}  //url为http://localhost:8100/#/pageOne;

          defualtHistory:PageComponent在没有设置返回时,会自动设置back button。导航至HomePage.

     InfiniteScroll    && Refresher:

    ...
    template:`
      <ion-content>
         <ion-list><ion-item></ion-item></ion-list>
         <ion-infinite-scroll  (ionInfinite)='do($event)'>
             <ion-infinite-scroll-content  loadingSpinner='' loadingText=''>
          //<ion-refresh-content refreshSpinner='' refreshText=''></..> </ion-infinite-scroll-content> </ion-infinite-scroll> </ion-content> ` ...... export class Page{ ....... do(inifinate){ if(end) return inifinate.enable(false); Http.get(...); inifinate.complate(); } }

      ion-infinite-scroll-content:控制载入等待时的样式;

          没有data可供加载时,使用inifinate.enable(false),使其失效。

          refresher使用方法大致相同,用于向上刷动。

     RadioGroup:

      

    <ion-list radio-group [(ngModel)]='getRadio'>
       <ion-item>
            <ion-label> one</ion-label>
            <ion-radio value='one'> </ion-radio> 
        </ion-item>
    </ion-list>    
    

      设置了radio-group后,getRadio可获得选中值,radio-group为单选。

    Segment:

    <form [formGroup]='form'>
    <ion-segment [formControlName] ='"segment"'>      // 也可以使用<ion-segment [(ngModel)]='getSegment'>将button的value连接到getSegment. 
    
        <ion-segment-button value='one' >one </..>
        <ion-segment-button value='two'>two </..>
    </ion-segment>

    使用formGroup;可以直接使用this.form.form.get('segment').valueChanges来进行监听。

    我的例子:https://github.com/zhantewei2/Ionic2-example-notes/tree/master/pages/testSegment

         这个例子是一个比较笨拙的方法。

    <ion-segment [ngModel]='segment' (ngModelChange)='Changed($event)'>使用这样可以,对value改变事件进行监听。

     ItemSliding:

     
    <ion-item-sliding #slide (ionDrag)='drag($event)'>
        <ion-item-option icon-left  (ionSwipe)='Swiped()'>
            <button item-button (click)='close(slide)'>
                 <item-icon name='archive'></item-con>
                button
             </button>
        </ion-item-option>
    
    
    export class Test{
          subject:any;
           ngOnInit(){
              this.subject=Subject.thrrotleTime(300).subscribe(val=>{console.log(val)})   
         }
        drag(e){
            this.subject.next(e.getSlidingPercent());       //获得item-sliding的滑动范围。
         }
           close(node){
             node.close()                //关闭item-sliding
         }
    }
    

      

      方法.close();

       事件:ionDrag(); 

        <ion-item-option> :ionSwipe(); //滑动成功时触发。

              ionReorder:不建议使用。

  • 相关阅读:
    C:把算术表达式分成Token
    JavaScript数据结构——链表的实现与应用
    JavaScript数据结构——队列的实现与应用
    JavaScript数据结构——栈的实现与应用
    由“RangeError: Invalid status code: 0”错误所引发的思考
    工作是最好的投资——图书摘录
    Node.js在指定的图片模板上生成二维码图片并附带底部文字说明
    苹果手机对网页上样式为position:fixed的弹窗支持不好的解决办法
    自定义react数据验证组件
    Ubuntu 18.04中截图工具Shutter的编辑按钮不可用的解决办法
  • 原文地址:https://www.cnblogs.com/ztwBlog/p/6228089.html
Copyright © 2011-2022 走看看