Ionic2 开发总结

2017-04-13  本文已影响2788人  charles0427

痛点在于开发环境吧,base app的下载和gradle编译都需要较好的外网环境

环境准备

gradle 配置

repositories {
//mavenCentral() // 注释掉
jcenter()
flatDir {
dirs 'libs'
}
maven {
url "http://maven.aliyun.com/nexus/content/groups/public"
}
}

Ionic2 使用

<ion-searchbar (ionInput)="getItems($event)"></ion-searchbar>
<ion-list>
  <ion-item *ngFor="let item of items">
    {{ item }}
  </ion-item>
</ion-list>

@Component({
  templateUrl: 'search/template.html',
})
class SearchPage {

  searchQuery: string = '';
  items: string[];

  constructor() {
    this.initializeItems();
  }

  initializeItems() {
    this.items = [
      'Amsterdam',
      'Bogota',
      ...
    ];
  }

  getItems(ev: any) {
    // Reset items back to all of the items
    this.initializeItems();

    // set val to the value of the searchbar
    let val = ev.target.value;

    // if the value is an empty string don't filter the items
    if (val && val.trim() != '') {
      this.items = this.items.filter((item) => {
        return (item.toLowerCase().indexOf(val.toLowerCase()) > -1);
      })
    }
  }
}
事件名称 事件说明
ionViewDidLoad 页面加载完毕触发。该事件发生在页面被创建成 DOM 的时候,且仅仅执行一次。如果页面被缓存(Ionic默认是缓存的)就不会再次触发该事件。该事件中可以放置初始化页面的一些事件。
ionViewWillEnter 即将进入一个页面变成当前激活页面的时候执行的事件。
ionViewDidEnter 进入了一个页面且变成了当前的激活页面,该事件不管是第一次进入还是缓存后进入都将执行。
ionViewWillLeave 将要离开了该页面之后变成了不是当前激活页面的时候执行的事件。
ionViewDidLeave 在页面完成了离开该页面并变成了不是当前激活页面的时候执行的事件。
ionViewWillUnload 在页面销毁和页面中有元素移除之前执行的事件。
ionViewDidUnload 在页面销毁和页面中有元素移除之后执行的事件

ionic resources对应的服务似乎不太稳定,也可以通过在线网站图标工厂

Angular2双向绑定

ngModule

<ion-input type="text", [(ngModule)]="inputTN"></ion-input>

ts文件中
private inputTN;
let tn = this.inputTN;

需要先定义变量名。

Angular2依赖注入

在自定义了一个http服务类后,页面中引用方法报错,原因是没有给服务类添加注解@Injectable()@Injectable()标志着一个类可以被一个注入器实例化;通常来讲,在试图实例化一个没有被标识为@Injectable()的类时候,注入器将会报告错误

Ionic2引入第三方js库

应用中想实现一个页面,进入时显示根据设备uuid生成的二维码,虽然barcodescanner可以实现生成二维码,但会打开一个Activity,这样体验不符合需求。于是想到引用第三方的js库,如qrcode.js等。
然而Ionic2使用typescript,ts中是无法直接调用js的。这里网上给出了两种方案。

  1. 引入js文件,通过declarations.d.ts文件声明引用变量。
  2. 通过types库下载qrcode。

方案2并没有成功,方案1的具体过程以qrcode为例,如下:

  1. 从github下在需要的js文件,jquery.min.jsqrcode.js
  2. 文件复制到项目'/src/assets/js'目录下,js目录是自己新建的
  3. 在index.html中引入:
    <script src="assets/js/jquery.min.js"></script> <script src="assets/js/qrcode.min.js"></script>
  4. 在src目录下的declarations.d.ts中申明qrcode的方法变量:
    declare var QRCode;
  5. 完成以上步骤后,就可以在ts中调用qrcode的方法,例如在页面上显示一个文本转换的二维码:
    <div id="qrImage" class="qrcode-image"></div>
    let qrImage = document.getElementById('qrImage'); new QRCode(qrImage, 'test');

获取设备分辨率

window.screen.width * window.devicePixelRatio; window.screen.height * window.devicePixelRatio;

隐藏滚动条

发现在部分设备上会显示滚动条,解决方法:修改app.sccs,添加如下代码:

::-webkit-scrollbar {  
  display: none !important;  
}  

编译

ionic build android --prod --release, --prod是压缩模式,编译出来的app启动速度变快,减少splash时间
--release是签名打包,具体可见Ionic2 安卓签名打包;
Ios有一特殊的地方,正常编译出来的都是.app文件,需要导入ITouch中生成ipa。后来发现,使用ionic run ios --prod安装到真机时,/ios/build/下会多出device目录,该目录下有现成ipa,省去iTouch这一步。

上一篇 下一篇

猜你喜欢

热点阅读