使用ionic总结:

1.全局禁用缓存的方法是:  $ionicConfigProvider.views.maxCache(0);

2. 在不同的用户输入场景下,需要显示不同的键盘模式以方便用户输入,如在输入邮件时键盘则显示邮件模式等,文本,数子等。

  <input type="number">

<input type="text">

<input type="emil">

  在 Ionic 中需要安装键盘插件控制键盘模式的显示,安装后在$ionicPlatform.ready中调用即可。 

$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
$rootScope.connectionCheck();
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleLightContent();
}
});

3.设备网络状况的检查:

document.addEventListener("deviceready", function () {
// listen for Online event
$rootScope.$on('$cordovaNetwork:online', function (event, networkState) {
var onlineState = networkState;
console.log("device online...");
})
// listen for Offline event
$rootScope.$on('$cordovaNetwork:offline', function (event, networkState) {
var offlineState = networkState;
//提醒用户的网络异常
$ionicLoading.show({
template: '网络异常,不能连接到服务器!'
});
})
}, false);

4. 如果某个界面上不想要导航栏,可以简单地在最顶端的标签中添加hide-nav-bar="true"

5.ion-scroll 不滚动
 《ion-scroll  id="xx"   delegate-handle="XX" direction="x" zooming="false" 》增加overflow-scroll="false" 即可。

 ionic页面上右侧会出现滚动条,去掉的方法如下:

 给ion-content上加overflow-scroll="true" 后再加上style="overflow:auto;"就好了

6.splash screen 在安卓上变形:

   在部分1080P下,按cordova splash screen 的  screen-xhdpi-portrait.png(720*960) 设置的启动画面,会变形挤瘦,需要在config.xml 中加入
 《preference name="SplashMaintainAspectRatio" value="true" /》不强制拉伸即可。

7. list 有延迟,可以在ion-content处使用 overflow-scroll="true"试试!

8. ng-click在  i  标签上没有效果;

9. label标签内的事件会在整个label内被触发;

10.  能用ng-if就用ng-if,ng-if的效率比ng-show和ng-hide高;

11. 如果在ion-list中的ion-item中并不能触发ng-click事件,可以在item中的元素上再套一层div;

12. 获取日期用$filter,var postdate = $filter('date')(date, 'yyyy-MM-dd HH:mm:ss');

13. 在安卓上的体验比较差,动画有延迟?可以试用ionic集成的crosswalk ;
14. 在ionic中嵌入网页html文件:可使用ng-build-html,不过它会过滤原始html的标签,我们可以引入$sce模块,用$sce.trustAsHtml()方法信任我们获取的网页.

ng-bind-html="content" ;

   $scope.content=$sce.trustAsHtml(data[0].Content);

15. 加载页面的时候会看到双括号:

  angularjs 在使用双括号的时候,第一个加载的页面,也就是应用中的index.html,其未被渲染好的模版可能会被用户看到。用ng-bind就不会遇到这个问题。
      原因是,浏览器需 要首先加载HTML页面,渲染它,然后Angular才有机会把它解释成你期望看到的内容。在大多数的模版中你依然可以使用双括号.但是对于
       index.html页面中的数据绑定操作,建议使用ng-bind。如 <h1 ng-bind="title"></h1>

16. 更新了数据,让界面更新:  可以用广播,注意$broadcast 和 $emit的区别

17. 如何显示相对时间?如几分钟前,几天前等,可以用momentjs,参考地址 ---https://scotch.io/tutorials/display-time-relatively-in-angular

18. 关闭应用: ionic.Platform.exitApp();      navigator.app.exitApp();

19. 在安卓设备上如何让title居中:  如果要统一让所有navbar上的title居中(包括上面的headerbar),可以在config里设置,如:

config(function($stateProvider, $urlRouterProvider,$ionicConfigProvider) {
$ionicConfigProvider.navBar.alignTitle('center');
...
}

20. ionic的subheader挡住了内容区域:解决方案是给<ion-content>加类has-subheader,同理也可以加has-header

<ion-content class="has-header has-subheader">

21. 对于需要添加数据的list,在添加数据后页面不能及时刷新造成卡顿怎么办?

使用$ionicScrollDelegate.resize();在添加数据后手动进行重新刷新;

22. ionic tab在Android中显示在顶部的解决方案:

.config(function($stateProvider, $urlRouterProvider,$ionicConfigProvider) {

        $ionicConfigProvider.platform.ios.tabs.style('standard');
$ionicConfigProvider.platform.ios.tabs.position('bottom');
$ionicConfigProvider.platform.android.tabs.style('standard');
$ionicConfigProvider.platform.android.tabs.position('standard'); $ionicConfigProvider.platform.ios.navBar.alignTitle('center');
$ionicConfigProvider.platform.android.navBar.alignTitle('left'); $ionicConfigProvider.platform.ios.backButton.previousTitleText('').icon('ion-ios-arrow-thin-left');
$ionicConfigProvider.platform.android.backButton.previousTitleText('').icon('ion-android-arrow-back'); $ionicConfigProvider.platform.ios.views.transition('ios');
$ionicConfigProvider.platform.android.views.transition('android');
}

23. 时候会出现ionicHistory.clearHistory无效,决办法,用 timeout();

$timeout(function () {
$ionicHistory.removeBackView();
$ionicHistory.clearCache();
$ionicHistory.clearHistory();
});

24. ionic 更改包名:找到根目录下的config.xml,其中<widget id='com.package.name'>是你的包名;

25. ionic中如何打开微信(或者其他应用):

使用协议 : weixin://
<a class="button button-block button-light" href="weixin://">打开微信</a>
然后在根目录下的config.xml中配置:
<access origin="weixin:*" launch-external="yes"/> //打开微信的

26. ionic.Platform.exitApp()退出后,再进入应用 splashscreen不显示:

  在config.xml文件里添加: <preference name="SplashShowOnlyFirstTime" value="false" />

27. ionic实现微信分享:参考文章--- https://chenhuichao.com/2016/10/09/ionic/ionic-wechat-share/

ionic使用的一些技巧的更多相关文章

  1. WebStorm技巧-在安卓手机上运行Ionic程序

    打开菜单项 Run -> Run-   选择 Edit Configurations-   添加一个 PhoneGap/Cordova 配置项,命名如: Ionic Android, 并输入相关 ...

  2. angularJS实用的开发技巧

    一.开端 真的是忙完这一阵子就可以忙下一阵子了啊... 最近在做一个angularJS+Ionic的移动端项目...记录一些技巧,方便自己以后查阅,也方便需要的人可以看一看...^_^ 二.基础原则了 ...

  3. 【开源】Ionic项目实例《Ionic中文社区》

    介绍 这几天闲着没事,就做了个第三方的Ionic社区的移动客户端,练练手,界面设计和图片资源直接从官方版拿来的.真懒o(︶︿︶)o 唉 网站开放出来的接口,都已全部实现,大家可以下着试试看. 源码 h ...

  4. AngularJS1.3一些技巧

    前言 框架选择.在上一篇文章评论中,有人说angular1.3是个过时的东西,建议使用angular2.其实这种说法很像拿jQuery1.x和jQuery2.x做比较,新的版本当然会有优化优势的地方, ...

  5. Ionic 常见问题及解决方案

    前言 Ionic是目前较为流行的Hybird App解决方案,在Ionic开发过程中会遇到很多常见的开发问题,本文尝试对这些问题给出解决方案. 一些常识与技巧 list 有延迟,可以在ion-cont ...

  6. [ionic开源项目教程] - 第5讲 如何在项目中使用全局配置

    第5讲 如何在项目中使用全局配置? Q:ionic开发,说纯粹一点,用的就是html+css+js,那么无疑跟web开发的方式是类似的.在这里给大家分享一个小技巧,如何在项目中使用全局配置? A:我的 ...

  7. Cordova+angularjs+ionic+vs2015开发(三)

    欢迎加群学习:457351423 这里有4000多部学习视频,涵盖各种技术,有需要的欢迎进群学习! 一.基础设置 1.修改App名称和程序起始页 打开config.xml配置文件显示如下,在[通用]选 ...

  8. VS2015 Cordova Ionic移动开发(三)

    一.基础设置 1.修改App名称和程序起始页 打开config.xml配置文件显示如下,在[通用]选项卡中,将显示名称和起始页,修改为自己想要的名称即可. 如需直接在xml文件中修改:右击config ...

  9. AngularJS进阶(三十)AngularJS项目开发技巧之图片预加载

    AngularJS项目开发技巧之图片预加载 绪 项目(移动端采用Ionic 框架)开发完毕,测试阶段发现移动APP首页的广告图片(图片由服务器端返回相应url地址)很难加载,主要原因还是网速.如下图左 ...

随机推荐

  1. The Guideline of Setting Up Samba Server on linux(Ubuntu)

    The Guideline of Setting Up Samba Server on linux(Ubuntu) From terminate command window, install the ...

  2. Qt信号和槽机制

    概述 信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解.信号和槽是一种高级接口,应用于对象之间的通信,他是QT的核心特性,也是QT差别于其他工具包的重要地方.信号和槽是QT自行定义 ...

  3. 大数据技术之_19_Spark学习_04_Spark Streaming 应用解析 + Spark Streaming 概述、运行、解析 + DStream 的输入、转换、输出 + 优化

    第1章 Spark Streaming 概述1.1 什么是 Spark Streaming1.2 为什么要学习 Spark Streaming1.3 Spark 与 Storm 的对比第2章 运行 S ...

  4. maven+springmvc出现:java.sql.SQLException: Unknown system variable 'query_cache_size'

    连接mysql时一直出现以下的错误: org.springframework.web.util.NestedServletException: Request processing failed; n ...

  5. ES6的小知识(前半部分)

    一.let与const的使用 let:用来声明一个变量,与var类似 1.用let声明的变量,所声明的变量只在命令所在的代码块内有效 function hander(){ let a = 10; co ...

  6. http随笔

    1.什么是http? HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网 ...

  7. yii中的restful方式输出并调用接口和判断用户是否登录状态

    //创建一个控制器接口 返回的是restful方式 <?php namespace frontend\controllers; use frontend\models\Fenlei; use f ...

  8. xxx征集系统项目目标文档

    分组:每四人一组 主题:xxx征集系统 成果: 讨论结束后,每组提交一份课堂讨论记录(电子版发表到博客上,纸质版小组成员签名,下节课提交). 每人根据课堂讨论结果提交一份系统利益相关者描述案例.撰写项 ...

  9. mongoose中connect()、createConnection()和connection的区别和作用

    转文:原文 1 mongoose简介 在使用mongodb数据库开发项目中,nodejs环境下可能会使用到mongoose模块连接并操作mongodb数据库.mongoose模块相当于Java中的数据 ...

  10. python中的模块调用

    1.简介 在python中经常需要各模块相互调用,此时会出现以下几种情况: (1)同一目录下文件的调用 (2)父目录调用子目录中的文件 (3)同级目录下文件的调用 2.示例 现有该目录结构:AB中有A ...