H5分享系列二----ionic2填坑

click事件延时

http://ionicframework.com/docs/v2/faq/#click-delays
手机上适合用 tap 事件,而非click事件,因click事件在手机上有时候需要点击多次才会有响应。

// 禁止事件冒泡
stopEventPropagation(event:Event)
{
  let e = event["srcEvent"];
  if(e && e != undefined && e != null)
  {
    let stopPropagation = e["stopPropagation"];
    if(stopPropagation && stopPropagation != undefined && stopPropagation != null)
    {
      e.stopPropagation();
    }
  }
}

图片路径

模板中src路径要写成:

<img s rc="assets/images/home_ticket@2x.png">

显示网络图片(不变形)

.img-box{width: 100%;  
  height: 0; 
  padding-bottom: 80%;   
  overflow: hidden; 
  background-position: center center;   
  background-size: cover;}

<ion-thumbnail 
  class="img-box" 
  [ngStyle]="{ 'background-image': 'url(' + imgUrl + ')'}">
</ion-thumbnail>

json对象与typescript class对象

class-transformer

ionic-app-scripts0.0.48有个bug,它在打 ionic build ios --prod --release包的时候,会将metadata删除掉。

文件复制(以添加openlayers3为例)

$ cp node_modules\@ionic\app-scripts\config\copy.config.js config\copy.config.js

打开并编辑,在行尾的位置加入如下代码

{  
src: '{{SRC}}/ol/ol.js',  
dest: '{{BUILD}}/ol.js'
},
{  
src: '{{SRC}}/ol/ol.css',  
dest: '{{BUILD}}/ol.css'
}
$ vim package.json
# 加入:
"config": {  "ionic_copy": "./config/copy.config.js"},

http://stackoverflow.com/questions/36152343/ionic-2-beta-and-open-layers-3-not-loading-map

https://github.com/driftyco/ionic-app-scripts

http://ionicframework.com/docs/v2/resources/app-scripts/

openlayers3 Map click事件问题

<ion-content/>的样式会影响Map上marker的点击事件:

.scroll-content {
 position: absolute;
 overflow-x: hidden;
 overflow-y: scroll;
}

修改为:

map-page .scroll-content {
 position: relative;
 overflow-x: visible;
 overflow-y: visible;
 margin-top: 44px;
 height: calc(100vh - 44px - 49px);
}

<ion-tab> 继承 <ion-nav> swipeBackEnabled

某些页面需要禁用滑动返回,在需要禁用的页面:

constructor(public tab: Tab)
{
}
ionViewDidEnter()
{
  this.tab.swipeBackEnabled = false;
}
ionViewDidLeave()
{
  this.tab.swipeBackEnabled = true;
}

集成百度地图报错

Cannot read property 'fc' of undefined

要将百度地图的初始化代码写在ngOnInit勾子函数

ngOnInit(){  
  var map = new BMap.Map("map_container");  
  var point = new BMap.Point(116.404, 39.915);  
  map.centerAndZoom(point, 15);  
  window.setTimeout(function(){    
    map.panTo(new BMap.Point(116.409, 39.918));  
  }, 2000);
}

css transform 百分比

css transform 可以平移元素,可以设置百分比,是相对于元素本身的。

// 表示x轴向左移动宽度的一半+11px,y轴不平移
transform: translate(calc(-50% + 11px), 0)

sass中calc中使用变量

// 以下样式,在浏览器中会使用第一个样式,在ios/android中会使用第二个样式
.ol-zoom{
top: calc(100% - 6.2em);
}
// 减去status bar的高度
.platform-ios .ol-zoom, .platform-md .ol-zoom{ 
  top: calc(100% - 6.2em - #{$cordova-ios-statusbar-padding});
}

所有平台都显示iOS效果

// app.module.ts
IonicModule.forRoot(MyApp, 
{  
    tabsHideOnSubPages:"true", // nav在push的时候隐藏tabs  
    backButtonText: '',  
    iconMode: 'ios',  
    mode: 'ios'
})

保存ionic状态

将添加的plugins/platform/...等信息写入配置文件

$ ionic state save

打包prod(压缩main.js文件)

打包后app启动时间会大幅缩短
https://forum.ionicframework.com/t/ionic-2-speed-up-boot-time/46372/133

$ ionic build ios --prod --release
$ ionic build android --prod --release

Android硬件返回

// 我的页面结构是:
<ion-nav>
  <ion-tabs>
    <ion-tab></ion-tab>
    <ion-tab></ion-tab>
    <ion-tab></ion-tab>
  </ion-tabs>
</ion-nav>

// app.component.ts
this.platform.registerBackButtonAction(()=>{
  if(this.nav.getActive().instance.tabs.getSelected().canGoBack())
  {
    // nav可以返回
    console.log("h5 page back " + this.nav.getActive().instance.tabs.getSelected().canGoBack());
    this.nav.getActive().instance.tabs.getSelected().pop();
  }
  else
  {
    // nav不能返回时,判断是否是android+cordova环境,如果是则调用native插件exit app
    console.log("ask exit app!" + this.nav.getActive().instance.tabs.getSelected().canGoBack());
    if(this.platform.is("cordova") && cordova && cordova["exec"] && this.platform.is("android"))
    {
      // 调用native插件exit app,kill app进程,
      // 如果不kill进程,重新打开app的时候会黑屏
    }
  }
}, 100);

iOS上禁止webview拖拽

self.webView.scrollView.bounces = NO;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容

  • Ionic是一个基于Angular2的开发手机web app的框架,它包含了一整套手机端的样式组件,和一系列的功能...
    王兆龙阅读 1,170评论 1 1
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,417评论 2 45
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • 风格指数: 帝都温泉有着世界少有的滑温泉,泡完上来全身都滑不留手,水质优良,有着目前世界最大的温泉瀑布群、温泉舞台...
    阳文斌阅读 163评论 0 0
  • 来到湖南永州游历了大半个月,在欣赏着复杂多样的地貌时,并亲身感受当地人的淳朴和善良,这一切都让我终身难忘。今天,再...
    智者见仁阅读 1,756评论 0 0