apicloud踩坑集锦
最近在用apicloud开发,这里录入一些踩坑的地方,从头到尾,要多尴尬有多尴尬,新入app开发,记录一些心得,和遇到的坑以及解决办法。
1,apicloud 打包的Android app ,打开frame页面时,配置rect时(窗口的大小位置描述),发现,‘auto’的宽度,约有15px的右边留白。目前不知道具体原因。
详细描述一下问题,即openFrame的时候,设置rect: { w:'auto' }(其他配置省略描述)时,在新frame中,设置div宽度为100%,不能够充满通栏。右侧有约
15px的留白,目前比拙劣的使用了,api.frameWidth+15进行了通栏操作,但是,div右侧会有15px进入到右边向左滑动才会出现的间隙留白。因此给了右边
一个15px的内边距padding解决了。(非常想说是15公分),不知道是否是常见问题,apicloud社区没有搜到相关问题有知道的大佬,烦请告知。
还有很多问题,再慢慢总结,先上班,未完待续~~~~~欢迎沟通交流,谢前辈们。
1. tac深坑 ,tac根据当前 宽度,进行文本的自适应水平居中,但是在移动端,屏幕大小变化的,无法同步自适应。
导致文字剧中,解决方法,div包裹,文本,转化为div在div中水平,垂直剧中即可
在浏览器环境下,window.onresize事件中,可以动态添加div行内属性,textAlign='center'.
2. 利用jq的序列化方法serializeArray ,封装了一个serializeObject方法,并重新挂在jQuery.prototype上。
3. 入口文件index.html 首先应该判断是否登陆,如果登陆,在初始化页面,打开首页main.html对应的页面,如果没有登陆
就应该显示login.html对应的页面,配合localStorage进行验证 这里如果要用到token会好一些,可以在登录时,给后台发送token,判断token是否过期。
更好的控制登录。
4. apicloud中5大ui 组件之间的关系是, app>(启动页)>widget(一个或者多个项目包)>window
(每一个项目包对应默认打开一个window)>frame/frameGroup的关系,最开始打开应用的时候默认打开的文件就
是一个window 。基本是window+frame的布局方式在子frame会依赖在父frame上。
5 在apicloud中,尽量使用padding去设置,大的木块如header,main边距,否则,会增高#wrap的高度,高出一个
api.frameHeight的高度就会出现留白。
6 在apiready中才能够访问到api,引入外部ui组件的时候,需要创建实例,实例的回调需要用到api方法,如openframe时
应该把实例定义在apiready中,其实即 ‘’ ‘’实际上也就挂载在api上,$api也能够访问。也可以把window.apiread挂载window上
把ui对象实例化对象也挂载window上。
7 tapmode属性,解决300毫秒延迟
8 页面之间反向传值,可以在下一个页面frame定义一个api.sendEvent({})name 定义事件名称, extra 传递参数,
在监听事件addEventListener时,回调函数function(ret,err) 分部获取参数,和报错。传递参数有一个小坑,
出现2中取值情况。ret.value.key 或者ret.value.key.index 暂时不明白机制,做了兼容性处理。
9 布局中,将main部分当做是新的frame打开区域,打开main是在原来frame的情形下打开的,仍然会占据位置
如果需要底部的tabbar,并不能用定位定到底部。
10 实现底部按钮的时候,不能够直接定位到底部,app里面是不支持的,一般需要两端去头去尾,开辟一个frame空间,设置
高度之后,能够让底部botton站在底部位置。但是如果中间不需要新的frame的时候就不能够很好的让botton,居于底部
这里直接,在打开window的时候就在底部打开一个frame只用来装botton.html这样的话就能够实现了。
11 键盘弹出时, 盖住输入框。 ios可以监听事件keybordshow,回到中ret.h表示是键盘的高度,通过判断,输入框的高度,
来进行判断是否需要操作页面。
12 常识: apicloud中想要去操作dom,外面去获取,apiready中不一定能拿到dom出现问题 ,时机可能是不对的
13 使用api.bringFrameFont 方法是需要frame先打开的。为了节省资源,我判断了是否打开。如果没打开,则openFrame,
如果已经打开了,选择api.bringFrameFont ,判断依据比较拙劣,使用的是var frames = api.frames()返回一个包含已打开frame名的
的动态数组。数组包含对像{ name: }的形式。使用了filter筛选出的名称相等的数组,进行了长度判断。比较劣质,欢迎讨论
14 关于api.bringFrameFont另外一个坑。不能够操作FrameGroup中的frame,通过frameGroup中的frame出现的形式,应该是左右排列的
所有不太生效。
15 小技巧,如果在操作按钮时,如果不想去操作dom注册事件,可以定义事件,然后再行内式注册事件,免去操作dom的麻烦。
16 header部分,因为需要title居中显示,通过会用到自觉父相的定位,导致back后退图片,在底下无法点到。记得给后退图标的元素,加相对定位!
这就是为什么,无法调用api.closeWin关闭窗口的原因。
17 在使用api.execScript方法时,需要注意的是,当参数数据为复杂数据类型时,如果不转化为jSON类型的话,会报语法错误。其用法类似于JSONP,通过调用
函数,实参传递给形参得方式,在另外一个页面拿到当前页面的数据。注意,外层引号为单引,避免与JSON数据类型双引号冲突。
18 apicloud打包IOS和Android 是有兼容性问题的,对于键盘 弹起判断的api只能够在config.xml文件中配置,并且无法作用于安卓,安卓可以自适应。且重点来了
z-index 属性,在 苹果中如果使用负值,IOS是不支持的。Android的absolute 在IOS中如果父元素使用了flex布局,也是无效的。
apicloud踩坑集锦的更多相关文章
- Spring boot应用踩坑集锦
Spring boot应用踩坑集锦 spring boot是spring的一种开发套件,是spring cloud的基础框架,要学习spring cloud微服务是绕不开的,遇到一些踩坑问题在这里记录 ...
- linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(三)
linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(三) 安装PHP 1.yum方式安装PHP方法同安装apache一样传送门:linux cent ...
- linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦
linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(一) 一.Linux下安装MySQL 1.下载 下载地址:http://dev.mysql.co ...
- linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(二)
linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(二) 安装apache web容器 . yum方式安装apache 注意apache在linux ...
- centos 踩坑集锦
定时任务 top 命令添加定时任务无效 我通过以下命令获取总进程数与僵尸进程数 vim procs.sh procs_total=`/bin/top -n 1|grep Tasks|sed 's/,/ ...
- Xamarin.Forms踩坑集锦(持续更新)
1.ImageButton控件 问题:ImageButton在切换图片的时候,图片大小会改变. Github Issue:ImageButton changes image size · Issue ...
- hyperledger-fabric环境快速搭建踩坑集锦(实用)
安装docker 及 docker-compose 安装docker没什么好说的,一部分教程都给出了指令,在这里就不谈了. docker-compose不同的教程给出了不同的方法,在这里介绍一种极为快 ...
- centos7使用Minikube“快速搭建“出Kubernetes本地实验环境(踩坑集锦及解决方案)
先决条件(先假设你做完这两步骤) 检查Linux是否支持虚拟化,验证输出是否为非空如何开启虚拟化 grep -E --color 'vmx|svm' /proc/cpuinfo 安装 kubectl ...
- 【深度学习 论文篇 03-2】Pytorch搭建SSD模型踩坑集锦
论文地址:https://arxiv.org/abs/1512.02325 源码地址:http://github.com/amdegroot/ssd.pytorch 环境1:torch1.9.0+CP ...
随机推荐
- POJ 1780 【手工递归】【欧拉回路】
题意: 1.提供密码的位数. 2.密码的输入可以一直保持,取后n位作为密码.如果密码正确则开锁. 3.设计一种方法使得在输入最少的情况下破译.(即保证每个密码只输入一次) 4.输出输入的数字的序列. ...
- 51nod 1907(多项式乘法启发式合并)
题目: 分析: 对于一个确定的生成子图,很明显是在一个连通块上走,走完了再跳到另一个连通块上,假设连通块个数为cnt,那么答案一定是$min(a_{cnt-1},a_cnt,..,a_{n-1})$ ...
- 七天从零基础学习android(2)--第一个安卓程序
在环境配置的那一部分,已经把基础的环境配置好了,接下来应该实现第一个安卓程序,就是著名的hello world 先在avd里面新建一个虚拟机,并且启动它 然后该虚拟机器能够在eclipse上正常识别 ...
- jenkins的构建日志(console output)分类解析
每个jenkins的job构建过程中会产生大量日志,如何快速找到或者查看我们关心的日志显得很有意义,为此jenkins提供了一个插件“Log Parser Plugin”可以帮助我们完成这个任务. 1 ...
- cocoapods应用第一部分-xcode创建.framework相关
问题的提出: 随着项目的越来越大,可能会出现好几个团队共同维护一个项目的情况,比如:项目组A负责当中的A块,项目组B负责当中的B块.....这几块彼此之间既独立,也相互联系.对于这样的情况,能够採用约 ...
- leveldb学习:DBimpl
leveldb将数据库的有关操作都定义在了DB类,它负责整个系统功能组件的连接和调用.是整个系统的脊柱. level::DB是一个接口类,真正的实如今DBimpl类. 作者在文档impl.html中描 ...
- devres in linux driver
写 driver 时, probe 中常常要为设备分配一些资源, 如 内存 / irq / gpio / iomap 等. 而在 probe 中失败时又要小心的释放掉这些资源. 底层驱动开发人员可能会 ...
- 解决javah生成.h头文件找不到找不到android.support.v7.app.AppCompatActivity的问题
问题描写叙述: 在使用Android Studio进行JNI开发时,须要使用javah生成C或C++的头文件,可是可能会遇到: 错误: 无法訪问android.support.v7.app.AppCo ...
- 发挥bat的作用
from 转自:http://blog.csdn.net/hitlion2008/article/details/7467252 1.什么是Windows BATCH BATCH也就是批处理文件,有时 ...
- 关于Address already in use: connect问题分析及解决方案
最近给一个公司做项目的时候,在完成上报的功能 的时候,发现数据量稍微大的时候,会出现这样的问题: 错误描述: com.microsoft.sqlserver.jdbc.SQLServerExcepti ...