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. 引擎或模块问题: 遇到应用层无法解 ...
随机推荐
- 201871010135 张玉晶《面向对象程序设计(java)》第十五周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/zyja/p/12000 ...
- 201871020225-牟星源《面向对象程序设计(java)》第十四周学习总结
201871020225-牟星源<面向对象程序设计(java)>第十四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- centos用手机号无法登入安全狗的解决方法
前面我们安装好了安全狗,需要加服务器加入服云中,通常用sdcloud –u 用户名就可以,但如果是手机号的话就可能无法登陆,我们用sdcloud -h命令查看帮助,如下图所示 我们看到输入账号可以用- ...
- Python内容
1.Python介绍.计算机硬件.网络.变量.数据类型:列表+元组+字典+布尔值+字符串+数字+集合.格式化输出.if判断.for循环.while循环. 2.三元运算.字符编码.文件处理:r/rb(读 ...
- zz:一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
首先定义:待优化参数: ,目标函数: ,初始学习率 . 而后,开始进行迭代优化.在每个epoch : 计算目标函数关于当前参数的梯度: 根据历史梯度计算一阶动量和二阶动量:, 计算当前时刻的下降 ...
- Spring Cloud微服务安全实战_3-7_API安全之授权
API安全之授权 访问控制: 1,ACL :Access Control Lists,直接给每个用户授权,他能访问什么.开发简单,但是用户多的话,给每个用户授权比较麻烦. 2,RBAC:Role Ba ...
- vim目录树
使用vim插件:显示树形目录插件NERDTree 安装方法很简单,先把压缩文件下载下来,解压后将plugin目录下的NERD_tree.vim拷贝~/.vim/plugin以及doc目录下的NERD_ ...
- [LeetCode] 876. Middle of the Linked List 链表的中间结点
Given a non-empty, singly linked list with head node head, return a middle node of linked list. If t ...
- [LeetCode] 37. Sudoku Solver 求解数独
Write a program to solve a Sudoku puzzle by filling the empty cells. A sudoku solution must satisfy ...
- [转载]3.1 UiPath鼠标操作元素的介绍和使用
一.鼠标(mouse)操作的介绍 模拟用户使用鼠标操作的一种行为,例如单击,双击,悬浮.根据作用对象的不同我们可以分为对元素的操作.对文本的操作和对图像的操作 二.鼠标对元素的操作在UiPath中的使 ...