:::warning 以下图APP为例,搭建一个带有Tab跳转的列表展示模块。
::: 图片.png

关于前端框架

:::info 前端推荐使用AUI移动前端框架搭建,APICloud中内置了该框架的一些基础样式,可以直接调用。
点击可看框架在线Demo→ http://aui.ea55.com/

APICloud官网的模块Storet提供了很多开发常用模块,界面布局几乎不需要自己画,基本组件直接拿来用就可以,可以通过参数自定义样式。https://www.apicloud.com/modulestore

使用APICloud前端框架需引入api.js和api.css文件。api.js、api.css 在创建APICloud 项目时自动创建。 :::

新建底部菜单层

建立一个以win为后缀的html文件,在代码页中右键——插入AUI组件,选择底部工具栏,选择一个底部工作栏样式。
该页面的作用是一个Window窗口,Window是一个独立的Native窗口(Android或IOS),是APICloud应用界面的基本组件,每一个APP都是由多个Window组成,Window所承载的内容由其加载的HTML页面决定。
每一个Window都是独立的Web容器,有自己独立的Dom树结构,并且独立进行渲染。Window的起点位于屏幕左上角,宽高占满屏幕,不可修改。Window内部可以包含Layout、Frame和UIModule。
图片.png 图片.png
图片.png

将“故障”和“我的”绑定onclick事件,并在js中定义事件:
打开Window:

  1. api.openWin({
  2. name: 'page1',
  3. url: './page1.html',
  4. pageParam: {
  5. name: 'test'
  6. }
  7. });

关闭Window:

  1. api.closeToWin({
  2. name: 'root'
  3. });

详细使用方式可直接滚动到本页最下方的javascript部分查看

新建Tab标签层


新建一个以frm为后缀的html页面,插入AUI组件中的Tab切换样式。
该页面的作用是一个Frame窗口,Frame是一个独立的Native窗口(Android或IOS),视图所承载的内容其所加载的HTML页面决定,每一个Frame都是独立的Web容器,有自己独立的Dom树结构,并且独立进行渲染,Frame的位置和宽高可通过参数配置。
Frame通常作为一个子视图,嵌入到Window或Layout中,Frame内部可以包含UIModule.图片.png 图片.png
图片.png

为三个Tab绑定onclick事件,并在js中定义事件:

打开Frame:(窗体之间的传值可以使用pageParam)

  1. api.openFrame({
  2. name: 'page2',
  3. url: './page2.html',
  4. rect: {
  5. x: 0,
  6. y: 0,
  7. w: 'auto',
  8. h: 'auto'
  9. },
  10. pageParam: {
  11. name: 'test'
  12. }
  13. });

关闭Frame:

  1. api.setFrameAttr({
  2. name: 'page2',
  3. bounces: true
  4. });

详细使用方式可直接滚动到本页最下方的javascript部分查看

新建数据列表层

新建三个以list为后缀的html页面,分别对应三种不同的单据状态,也可以所有状态都用一个页面。数据列表可以自己手动画,也可以直接用封装好的第三方模块,在这个项目里,用的是UIListEdit模块,需要提前把这个模块添加到APP中,然后重新编译才能使用。(APICloud中每个模块都有开发文档,可直接参考文档中的示例代码)
图片.png

在开发控制台中添加模块:
图片.png

在apiready中引入UIListEdit模块:
图片.png

UIListEdit绑定数据(data中绑定的ResultData就是从服务端传过来的json数据,关于服务端的交互说明,请查看第四篇文档):
图片.png

UIListEdit官方文档:查看

关于JavaScript

:::info api 对象是您入门 APICloud 必须了解和熟练掌握的一个基础对象。
api 对象提供了构建应用程序所需要的一些基本的方法[Method],如窗口操作、相册和网络数据访问等;以及一些常见的属性[Attribute],如屏幕宽度(screenWidth),系统类型(systemType)等;还有一些常用事件[Event],如电量低(batterylow)事件、应用进入后台(pause)事件。api 对象不需要 require 引用,可以直接在 js 中使用。 :::

关于行为交互,不要使用网页交互的方式,更不要使用jQuery、AngularJS、BootStrap等重型的框架,会影响渲染性能,兼容问题或使用灵敏度,尽量使用api对象,在apiready中使用$api提供的方法,如$api.Trim() 去掉字符串首尾空格,$api.addEvt() 为DOM元素绑定事件。

apiready相当于window.onload $(function(){}); 是在api对象准备完毕后产生,在每个Window或Frame的HTML代码中都需要监听此事件,以确定APICloud扩展对象已经准备完毕,可以调用了,可以在这里配置模块的初始化,api对象必须在apiready里使用。
图片.png 图片.png

$api和api有什么区别?

$api是apicloud的js框架,类似jquery中的$
api是指apicloud的端api对象

api对象的常用属性:

  1. var appId = api.appId; //应用的 ID,比如: A6980386445546
  2. var appVersion = api.appVersion; // 应用版本号,字符串类型,比如: 1.0.0
  3. var systemType = api.systemType; // 系统类型,字符串类型,比如: ios
  4. api.connectionType; //当前网络连接类型,如 2g、3g、4g、wifi 等,字符串类型,比如: wifi
  5. var deviceModel = api.deviceModel; // 设备型号,字符串类型,比如iPhone X的型号: iPhone10,3

api对象的常用事件:

  1. //offline: 监听设备断开网络的事件,字符串类型
  2. api.addEventListener({
  3. name:'offline'
  4. }, function(ret, err){
  5. alert('断网了');
  6. });
  7. //online: 监听设备连接到网络的事件,字符串类型
  8. api.addEventListener({
  9. name:'online'
  10. }, function(ret, err){
  11. alert('已连接到网络');
  12. });
  13. //takescreenshot: 应用在前台运行期间,用户屏幕截图事件(比如同时按下了 home 键和电源键),只支持 iOS。
  14. api.addEventListener({
  15. name:'takescreenshot'
  16. }, function(ret, err){
  17. alert('用户截屏了');
  18. });
  19. //launchviewclicked : 闪屏广告被用户点击后的回调,字符串类型
  20. api.addEventListener({
  21. name:'launchviewclicked'
  22. },function(ret,err){
  23. api.alert({
  24. msg:ret.value
  25. });
  26. });

api对象的更多使用方式请参考:https://docs.apicloud.com/Client-API/api#5

$api使用参考:

  1. $api.trim(' abc 123 '); //去掉字符串首尾空格
  2. $api.addEvt(element, 'click', function(){ //为DOM元素绑定事件
  3. //do something
  4. });
  5. $api.byId('idStr') //通过Id选择DOM元素
  6. $api.contains(parentEl, targetEl); //判断某一个元素是否包含目标元素
  7. $api.attr(el,'data','123'); //获取或设置DOM元素的属性

$api的更多常用方法可参考:https://docs.apicloud.com/Front-end-Framework/framework-dev-guide