APICloud项目纪要
一.页面之间的传递参数
通过pageParam传递参数:
api.openWin({
name: 'ware',
url: './ware.html',
pageParam: {
wareId: 'w123'
}
});
在打开的窗口使用 api.pageParam 接收数据
api.pageParam.wareId
二.窗口之间的通信机制:
1.跨窗口调用函数,类似于vue的子传父
定义函数(携带数据)
api.execScript({
name: 'login', //窗口name
frameName: 'login_frame', //窗口下的framename
script: 'fnSetUserName(\"' + usernameValue +'\");'
});
另一个窗口监听函数得到数据
function fnSetUserName(data) { console.log(data) //传过来的数据 }
2.自定义全局事件
api.sendEvent({
name: 'cityChange', //事件名
extra: {currentCity: cityList[index]} // 数据的 key 和 value
});
其他页面监听事件得到数据
api.addEventListener({
name: 'cityChange' //监听的事件名
}, function (ret, err) {
if (ret) {
if (ret.value) {
// 得到数据
currentCityId = ret.value.currentCity.id;
}
}
});
三.dot模板引擎使用方法
1.script 标签定义一个模板
<script type="text/template" id="template">
{{~it:value:index}} //~it 默认处理方式为数组
{{?0 == value.showType}} // if 条件编译
<div class="content" tapmode onclick="fnOpenWareWin('{{=value.id}}');"></div> //通过 花括号= 的方式插值
{{??}} //相当于else
<div class="content" tapmode onclick="fnOpenWareWin('{{=value.id}}');"></div>
{{?}}
{{~}} // 结束标签 ~
</script>
特别注意点:如果模板中有点击事件,那么需要调用 api.parseTapmode(); 方法
由于是动态的将元素添加到Dom树上,所以需要手动触发tapmode检查,列表中的元素才能实现点击加速的效果
2.模板数据进行渲染
function fnUpdata() {
// 获取页面存放数据的位置
var list = $api.byId('list');
// 1. 编译模板函数
var tempFn = doT.template($api.byId('template').innerHTML);
// 2. 多次使用模板函数
var resultText = tempFn(data);
// 由于是动态的将元素添加到Dom树上,所以需要手动触发tapmode检查,列表中的元素才能实现点击加速的效果
api.parseTapmode();
}
四.图片缓存
在有用到图片的地方可以执行一个onload方法,下面代码写在方法中
api.imageCache({
url: wareTypeList[api.pageParam.wareTypeIndex].banner.url
}, function (ret, err) {
if (ret && ret.success) {
banner.src = ret.url;
}
});
五.下拉刷新
下面代码写在 apiready 页面初始化的方法中执行
api.setRefreshHeaderInfo({
visible: true,
loadingImg: 'widget://image/refresh.png',
bgColor: '#ccc',
textColor: '#fff',
textDown: '下拉刷新...',
textUp: '松开刷新...',
showTime: true,
}, function(ret, err){
fnGetWareList() //重新请求数据的方法
//从服务器加载数据,完成后调用api.refreshHeaderLoadDone()方法恢复组件到默认状态
});
六.上拉加载
此方法写在 api.addEventListener 事件监听函数中
function initEventListenter() {
// 上拉加载
api.addEventListener({
name: 'scrolltobottom',
extra: {
threshold: 300 //设置距离底部多少距离时触发,默认值为0,数字类型
}
}, function (ret, err) {
fnGetWareList(true) //重新请求数据的方法
});
}
重新请求数据的方法的方法,传递一个参数,用来标识是下拉刷新,还是上拉加载
fnGetWareList(load) {
if(load) {
skip += limit //页数加上条数
} else {
skip = 0 // 设置页数从0请求
}
}
重新请求数据方法成功后调用的更新数据的方法
// 重新请求数据方法成功后调用的更新数据的方法
function fnUpdateWareList(data_, load) { // 获取要显示在页面的区域
var list = $api.byId('list'); // 编译模板函数
var tempFn = doT.template($api.byId('template').innerHTML); // 使用模板函数生成HTML文本
var resultHTML = tempFn(data_); // 判断是否是加载更多,如果是加载更多,则追加到list中
if (load) {
$api.append(list, resultHTML);
// 如果服务器端已经没有更多数据返回,更新提示信息
if (data_.length < LIMIT) {
var pushStatus = $api.byId('pushStatus');
pushStatus.innerHTML = "没有啦!";
}
} else {
// 否则,直接替换list中的内容
$api.html(list, resultHTML);
} // 由于是动态的将元素添加到Dom树上,所以需要手动触发tapmode检查,列表中的元素才能实现点击加速的效果
api.parseTapmode();
}
APICloud项目纪要的更多相关文章
- Django项目纪要
开发流程 公司高层 项目立项 | 市场部门 需求分析-->需求分析说明书, 需求规格说明书 | 产品部门 产品原型-->产品 UI 前端 后端 测试 移动端 | |------------ ...
- 【APICloud】利用sublimetext3编写apicloud
下载sublime text 3 安装插件 使用模糊搜索apicloud有三个插件全部下载下来 安装海马玩模拟器,这是一个安卓的模拟器,进入官网下载后直接安装就可以了. 打开sublime text ...
- 【APICloud】APICloud基础学习与快速入门
前言:回顾这几天学习情况,总的来说APICloud官网它的学习资料和社区还是足够了,但是我必须吐槽一句,实在是过于混乱了,视频资料文档资料它一股脑地都堆在了那里,这几天基本处于在各个地方跳转,然后现在 ...
- apicloud教程2 (转载)
本帖最后由 中山赢友网络科技有限公司 于 2015-10-17 15:38 编辑 继<APICloud之小白图解教程系列(一):认识APICloud>之后的第二篇教程. 本篇教程有以下知识 ...
- 关于ApiCloud的Superwebview在androidstudio中集成微信支付模块,提示模块未绑定的问题
前两天ApiCloud项目集成了微信支付模块,android端今天也将ApiCloud官方的uzWxPay.jar集成了.在编译玩测试的时候提示wxPay模块为绑定!我的项目是使用ApiCloud推出 ...
- ApiCloud开发的注意事项
1. 引擎或模块问题:遇到应用层无法解决的问题,如果能确定需要引擎和模块支持的,不要自己想办法绕过去,要第一时间在开发者社区提交问题,或找APICloud项目经理提出. !!!注意!!!: 在开发者社 ...
- ApiCloud开发经验总结
1. 引擎或模块问题:遇到应用层无法解决的问题,如果能确定需要引擎和模块支持的,不要自己想办法绕过去,要第一时间在开发者社区提交问题,或找APICloud项目经理提出. !!!注意!!!: 在开发者社 ...
- APICloud APP前端框架——手机APP开发、APP制作、APP定制平台
概述 APICloud前端框架,包括api.js和api.css.api.css处理不同平台浏览器的默认样式.api.js是一个JavaScript库.是APICloud为混合移动开发定制的轻量Jav ...
- 如何开发出优秀的APICloud应用
APICloud定制平台项目实施规范 APICloud应用优化策略Top30 如何开发出运行体验良好.高性能的App 如何开发出客户满意.能够顺利交付的App 1. 引擎或模块问题: 遇到应用层无法解 ...
随机推荐
- javascript高级实战学习
学习目标: - 理解面向对象开发思想 - 掌握 JavaScript 面向对象开发相关模式 - 掌握在 JavaScript 中使用正则表达式 - typora-copy-images-to medi ...
- MySQL内连接、左连接、右连接的使用以及区别
首先先建两个表,student表和score表 select * from student; student表数据如下: select * from score; score表数据如下: 可以看 ...
- [Tkinter 教程12] 布局管理 (Pack Place Grid)
简介: 本文讲述如何使用 tkinter 的布局管理 (被称作 layout managers 或 geometry managers). tkinter 有三种布局管理方式: pack grid p ...
- 【目标检测】YOLO:
PPT 可以说是讲得相当之清楚了... deepsystems.io 中文翻译: https://zhuanlan.zhihu.com/p/24916786 图解YOLO YOLO核心思想:从R-CN ...
- ASP.NET开发实战——(五)ASP.NET MVC & 分层
上一篇文章简要说明了MVC所代表的含义并提供了详细的项目及其控制器.视图等内容的创建步骤,最终完成了一个简单ASP.NET MVC程序. 注:MVC与ASP.NET MVC不相等,MVC是一种开发模式 ...
- [LeetCode] 31. Next Permutation 下一个排列
Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...
- 算法&设计模式
这里更新Python 算法&设计模式部分的博客(或目录链接)
- 使用IDEA+vue.js+easyUI的demo
最近,随便写了几个开发的小例子,自己总结下,留个纪念. 例子1:使用EasyUI做了一个简单界面,服务器和客户端在一起. @Controller @RequestMapping("/demo ...
- 手撕代码:统计1到n二进制数中1出现的总次数
题目描述: 互娱手撕代码题. 统计从1到n这n个数的二进制表示中1出现的次数. 思路分析: 思路一:直接的做法是从1遍历到n,对于每个数和1做与操作,之后,对于这个数不断做右移操作,不断和1做与操作, ...
- python运维开发常用模块(5)文件目录对比模块filecmp
1.filecmp模块介绍 当我们进行代码审计或校验备份结果时,往往需要检查原始与目 标目录的文件一致性,Python的标准库已经自带了满足此需求的模块 filecmp.filecmp可以实现文件.目 ...