下载:http://download.csdn.net/detail/cometwo/9407914
原文:http://mobile.51cto.com/news-414811_all.htm¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥ Touch 在开发移动端的应用中会使用到很多的手势操作,例如一指拖动、两指旋转等等,为了方便开放者快速集成这些手势,在Clouda中内置了事件和手势库Library.touch,下面将详细的介绍如何使用Library.touch。 touch.config 语法: touch.config(config) 对手势事件库进行全局配置。 参数描述: config为一个对象 { tap: true, //tap类事件开关, 默认为true doubleTap: true, //doubleTap事件开关, 默认为true hold: true, //hold事件开关, 默认为true holdTime: 650, //hold时间长度 swipe: true, //swipe事件开关 swipeTime: 300, //触发swipe事件的最大时长 swipeMinDistance: 18, //swipe移动最小距离 swipeFactor: 5, //加速因子, 值越大变化速率越快 drag: true, //drag事件开关 pinch: true, //pinch类事件开关 } touch.on 语法:touch.on(element, types, options, callback) 绑定指定元素的事件。 参数描述: element: 元素对象或选择器。 types: 事件的类型, 可接受多个事件以空格分开,支持原生事件的透传, 支持的一些事件类型有: pinchstart 双指缩放动作开始 pinchend 双指缩放动作结束 pinch 双指缩放事件 pinchin 双指向里缩小 pinchout 双指向外放大 rotateleft 向左旋转 rotateright 向右旋转 rotate 旋转事件 swipestart 单指滑动动作开始 swiping 单指滑动事件 swipeend 单指滑动动作结束 swipeleft 单指向左滑动 swiperight 单指向右滑动事件 swipeup 单指向上滑动 swipedown 单指向下滑动 swipe 单指滑动事件 drag 单指向左右拖动 hold 单指按住不放事件 tap 单指点击 doubletap 单指双击 例如旋转实例如下: var angle = 30; touch.on(‘#rotation .target’, ‘touchstart’, function(ev){ ev.startRotate(); ev.originEvent.preventDefault(); ev.originEvent.stopPropagation(); }); touch.on(‘#rotation .target’, ‘rotate’, {interval: 10}, function(ev){ var totalAngle = angle + ev.rotation; if(ev.fingerStatus === ‘end’){ angle = angle + ev.rotation; } this.style.webkitTransform = ‘rotate(’ + totalAngle + ‘deg)’; }); 更多使用实例请查看http://code.baidu.com/ options(可选): 目前可配置的参数为: { //采样频率 interval: 10,//性能参数,值越小,实时性越好, 但性能可能略差, 值越大, 性能越好。遇到性能问题时,可以将值设大调优,建议值设置为10。 //swipe加速度因子(swipe事件专用) swipeFactor: 5 //(int: 1-10)值越大,速率更快。 } callback: 事件处理函数, 该函数接受的参数为一个gesture event object, 可访问的属性有: originEvent //触发某事件的原生对象 type //事件的名称 rotation //旋转角度 scale //缩放比例 direction //操作的方向属性 fingersCount //操作的手势数量 position //相关位置信息, 不同的操作产生不同的位置信息。 distance //swipe类两点之间的位移 distanceX //swipe类事件x方向的位移 distanceY //swipe类事件y方向的位移 angle //swipe类事件触发时偏移角度 factor //swipe事件加速度因子 startRotate //启动单指旋转方法,在某个元素的touchstart触发时调用。 touch.live 语法:touch.live(selector, types, options, callback) 使用方法基本上与on相同,live的第一个参数只接受css3选择器。通过live()方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素) touch.off 语法:touch.off(element,types,callback) 解除某元素上的事件绑定。 参数描述: element:元素对象或选择器 types:事件的类型 callback:时间处理函数 Publish/Subscribe subscribe 订阅被发布的数据,与pubilsh配合使用 不带参数 env.subscribe(publishName, function(collection){}); env.subscribe(“pub-allStudents”, function(studentCollection){ }); pulishName 所定义的Publish的唯一名称,在一个App内全局唯一,该参数与sumeru.publish(modelName, publishName,function(callback))中的publishName名称需要保持一致。 function(Collection){} Subscribe成功获得数据时,被调用的响应方法。 带参数 env.subscribe(publishName,arg1,arg2, … , function(collection){}); env.subscribe(“pub-StudentsWithGender”, “male”, function(msgCollection){ }); subscribeByPage 分页订阅数据 不带参数 env.subscribeByPage(publishName, options, function(collection){}); var pageOption{ pagesize : 1, page : 2, uniqueField : ‘time’ }; env.subscribeByPage(“pub-allStudents”, pageOption, function(studentCollection){ }); options 分页设置 pageSize 每页数据的数量 page 页码 uniqueField 排序的唯一字段名 带参数 env.subscribeByPage(publishName, options, arg1,arg2, … , function(collection){}); env.subscribeByPage(“pub-StudentsWithGender”, pageOption, “male”, function(msgCollection){ }); prioritySubscribe 在断线重新连接的情况下,使用prioritySubscribe方法订阅数据优先被调用,使用方式与subscribe相同。 publish 发布数据的方法,其运行在Server上。 不带参数 sumeru.publish(modelName,pubName,function(callback){},options) modelName 被发布数据所属的Model名称 pubName 所定义的Publish的唯一名称,在一个App内全局唯一,该参数与Controller中subscribe()成对使用。 function(callback) 描述数据发布规则的自定义函数,在这里定义被发布数据所需要符合的条件。 options 可在此添加以下六种事件 beforeInsert 在实际插入数据到数据库前的事件 beforeInsert : function(serverCollection, structData, userinfo, callback){ callback(structData); } structData 需要插入到数据库的数据,我们可以对该数据进行操作,然后将数据插入到数据库中,如果对数据没有修改,则将原数据添加到数据库中。 callback before系列的事件中如果不添加 callback(),将阻止数据对数据库的影响。 callback(structData) 如果需要对原数据进行修改,可以传入参数structData afterInsert 在实际插入数据到数据库后的事件 afterInsert : function(serverCollection, structData){ } beforeUpdate 在实际更新数据库数据前的事件 beforeUpdate : function(serverCollection, structData, userinfo, callback){ callback(); } afterUpdate 在实际更新数据库数据后的事件 afterUpdate : function(serverCollection, structData){ } beforeDelete 在实际删除数据库数据前的事件 beforeDelete : function(serverCollection, structData, userinfo, callback){ callback(); } afterDelete 在实际删除数据库数据后的事件 afterDelete : function(serverCollection, structData){ } 实例: module.exports = function(sumeru){ sumeru.publish(‘student’, ‘pub-allStudents’, function(callback){ var collection = this;
} 实例:
module.exports = function(sumeru){
}
sumeru.publishByPage(modelName,pubName,function(arg1,arg2,…,pageOptions, callback){},options) 分页设置,有Controller中subscribeByPage()传入。 实例:
sumeru.publishByPage(‘student’, ‘pub-allStudents’, function(gender,options,callback){ 排序 limit 每页显示的个数 skip 当前页与起始页间隔的个数 详细的使用情况请查看《Example》文档中的实例。
publishPlain
sumeru.publishPlain(modelName,pubName,function(callback){},options) 如果需要发布Collection中数据的总数量,可使用下面方法:
fw.publishPlain(‘student’, ‘pub-allStudents’, function(callback){
});
securePublish
sumeru.publish(modelName,pubName,function(userinfo, callback){},options)
sumeru.securePublishByPage(modelName,pubName,function(pageOptions,userinfo, callback){},options)
sumeru.securePublishPlain(modelName,pubName,function(userinfo, callback){},options) extfind(pubName,callback) 在publish文件中发布第三方数据
fw.publish(‘news’,’pubnews’,function(callback){
}); config[pubname] pubname 与publish中collection.extfind(pubname,callback)方法pubname一致,全局唯一 uniqueColumn uniqueColumn为三方数据唯一标识,类型为String
uniqueColumn : “name”, 指定抓取的URL。arg1,arg2为传递的参数
fetchUrl : function(/* arg1, arg2, arg3 /){ resolve方法作用是将抓取回来的原始数据(originData)转化成为符合Model定义的数据(resolved)
resolve : function(originData){ fetchInterval为可选参数,用来指定抓取时间间隔,单位为ms buffer buffer为可选参数,值为true时表示获取原始Buffer,否则获取原始数据字符串 type 声明此模块为归属为’external’
return {
/**
}
module.exports = runnable; 当数据发生变化时,如何使用Clouda达到三方数据同步的效果,具体实现方法如下: 较为紧凑的声明方式 postUrl postUrl方法用来指定三方post接口的地址信息, 参数type为增量类型,增量类型为’insert’,’update’,’delete’三者之一; prepare prepare方法用来将增量数据转化成为符合三方POST接口要求的post数据,参数type同为增量类型,参数data为增量的实际数据。 实例如下:
/**
}
module.exports = runnable; deleteUrl,insertUrl,updateUrl 三个方法作用等同于postUrl,返回不同操作下三方接口url信息 onDelete,onInsert,onUpdate 三个方法作用等同于prepare方法, 返回经过处理,传给三方接口的post数据 实例如下: function runnable(){
}
module.exports = runnable; 向第三方发送get请求
var url = “http://some.host.com“; 向第三方发送post请求
var options = {
var postData = {
var postCallback = function(data){
sumeru.external.post(options, postData, postCallback); |