我们用ionic打包的app在真机上需要处理手机硬键盘的返回键,下面提供几种方法:
$ionicPlatform.registerBackButtonAction(callback, priority, [actionId])
这个方法一般放在app.js
文件下的run()
中,controller
中不起作用,实例如下:
1 | $ionicPlatform.ready(function() { |
我们用ionic打包的app在真机上需要处理手机硬键盘的返回键,下面提供几种方法:
这个方法一般放在app.js
文件下的run()
中,controller
中不起作用,实例如下:
1 | $ionicPlatform.ready(function() { |
本文主要参考:http://www.ngnice.com/posts/2c8208220edb94
angular不推荐直接操作dom,建议使用双向绑定的数据来操作
原因:一般是$apply导致的,对于大多数操作,$apply都会自动执行,所以不用担心,但是如果使用了angular之外的功能,比如直接调用了setTimeout函数、挂接了jquery的事件、使用了jquery的ajax操作等等.那么系统就没有机会帮你调用$apply,界面也就没有机会刷新了,但是你如果之后又做了其他会导致$apply的操作,你会发现以前“欠下”的那次界面刷新被正常执行了
例:
1 | //这种情况下你在页面中绑定的time变量将不会被自动刷新 |
解决方案:
(1). 手动刷新:
1 | setTimeout(function() { |
(2). 使用angular内置指令:因为angular内置指令最后会调用$apply()
1 |
|
有这样一个题目:已知一对兔子每一个月可以生一对小兔子,而一对兔子出生后第三个月开始生小兔子假如一年内没有发生死亡,则一对兔子一年内能繁殖成多少对?
之前有人做过,我却怎么想都不明白,今天自己终于想出了方法,唉,这算是我的逻辑觉醒吗?
1 | var arr=new Array(12); |
本文参考自http://www.cnblogs.com/mliudong/p/4151594.html
Promise是一种模式,以同步操作的流程形式来操作异步事件,避免了层层嵌套,可以链式操作异步事件。
Service:HelloWorld的定义如下:
1 | .factory('HelloWorld', function($q, $timeout) { |
本文参考自:大前端
1 | <style type="text/css"> |
给末尾的li元素后面增加一个元素:<div class="clear"></div>
其样式为:
1 | .clear{clear:both;height:0;overflow:hidden;} |
在父类元素上面加类:<ul class="clearfix"></ul>
,后面的两个方法也是在父元素上加clearfix类
利用伪类,其样式为:
1 | .clearfix:before,.clearfix:after{ |
1 | .clearfix{*+height:1%;} |
1.先新建一个ionic项目
1 | $ ionic start test tabs |
2.安装插件
1 | $ cordova plugin add cordova-plugin-image-picker |
我们的yongche项目之前使用的camera插件是org.apache.cordova.camera,此处更新为cordova-plugin-camera,目前老版本的还可以使用
3.添加android环境
1 | $ ionic platform add android |
1 | //在index.html中cordova.js旁边引入ng-cordova.js |
1 | //在app.js中注入ngCordova |
参考:https://cordova.apache.org/docs/en/latest/cordova-plugin-camera/index.html
参考:阮一峰的博客
首先,在网页代码的头部,加入一行viewport元标签:允许网页宽度自动调整。
主流浏览器:
1 | <meta name="viewport" content="width=device-width, initial-scale=1" /> |
老式浏览器(主要是IE6、7、8):要用css3-mediaqueries.js
1 | <!--[if lt IE 9]> |
先自定义用的变量
1 | $scope.list=[ |
white-space
该属性的常用的值(容器的宽度固定):
normal
: 默认,超出容器范围时换行nowrap
: 超出容器的范围也不换行margin:0;padding:0;
1 | body{ |
IE浏览器的内核Trident、 Mozilla的Gecko、google的WebKit、Opera内核Presto。不同的浏览器默认的margin和padding等属性都不相同,为了保证各浏览器的一致性,所以用下述办法:
*{margin:0;padding:0;}
(不推荐)Reset CSS
。淘宝的css初始化:
1 | body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; } |
在controller
里放了这样的语句:
1 | $scope.$on('$ionicView.enter', function() { |
在刚进入controller的时候会先执行直接放在controller里的代码,然后再执行上面的
两个方法。所以,无法用上面的方法对进入controller前进行预处理。
视图生命周期:
事件名称 | 作用 |
---|---|
$ionicView.loaded | 视图已经被加载了。这事件只发生一次当视图被创建并添加到Dom中。当跳出页面并且被缓存了的话,再次访问这个页面时这个时间将不会被激活。Loaded事件是个好方式让你为这个视图设置你的代码; 然而,他并不是我们推荐的时间去监听视图被激活。 |
$ionicView.enter | 进入视图并被激活。这事件被激活来判断这个视图是第一个加载还是被缓存了的。 |
$ionicView.leave | 离开这个视图并且不是活动页面。调用这个事件判断应该被缓存还是摧毁。 |
$ionicView.beforeEnter | 视图即将被打开变成活动页面。 |
$ionicView.beforeLeave | 视图将被关闭并且不是活动页面。 |
$ionicView.afterEnter | 进入视图并是当前的活动页面 |
$ionicView.afterLeave | 已经离开视图,并成为非激活页面 |
$ionicView.unloaded | 视图的Controller已经被摧毁并且他的页面元素也从Dom中移除 |