前面总结了一篇Lungo基础标签的笔记,这篇将要记录在学习LungoJS时的用到的javacript方法和心得:
核心部分比较简单,从方法名字上面大概就能看出是做什么用的,本人使用的比较少
主要是向控制台输出调试信息;有三个等级 1普通日志、2警告 、3错误
Lungo.Core.log(1, "Launched event"); Lungo.Core.log(2, "Warning!!"); Lungo.Core.log(3, "Error!!!!");
执行预先定义的回掉函数,官方文档中说可以执行多个方法,本人测试只执行了第一传入的方法
var myFunc = function(){ alert("func1") }; var myFunc2 = function(){ alert("func2") }; Lungo.Core.execute(myFunc);
虚拟一个新的方法,将一个函数的返回值与给定的序列绑定(合并拼接)
var example = "This is "; var addText = function(textToAdd){ text = this; for(var i = 0, len = textToAdd.length; i < len; i++){ text += " " + textToAdd[i]; } return text; }; var text = ["an", "example"]; var finalText = Lungo.Core.bind(example, addText)(text);text将作为addText方法的参数
将序列进行混合更新,只是简单的针对对应键值进行更新,其余混合进去,如官方例子
var CONFIG_BASE = { name: 'lungo_db', version: '1.0' }; var CONFIG = { version: '1.1'; } var finalConfig = Lungo.Core.mix(CONFIG_BASE, CONFIG);本人测试
var CONFIG_BASE = { name: '小明', age: '10' }; var CONFIG_1 = { name: '小红', age: '9' } var CONFIG_2 = { name: '小李', age: '11', sex:'male' }var finalConfig = Lungo.Core.mix(CONFIG_2, CONFIG); var first =Lungo.Core.mix(CONFIG_BASE, CONFIG) //上面代码中的 var second=Lungo.Core.mix(first, CONFIG_2) result: second Object {name: "小李", age: "11", version: "1.1", sex: "male"}
都比较简单,可以查看官方文档
除此以外,还有两个常用的方法isMobile()和environment()判断当前访问的设备是什么,来针对不同的设备显示不同的样式和功能
Lungo.Core.isMobile(); Lungo.Core.evironment();
Lungo有自己的内存缓存机制,
var framework = {name: "Lungo", twitter: "lungojs"}; Lungo.Cache.set("lungoFramework", framework); //实现缓存 var cachedFramework = Lungo.Cache.get("lungoFramework"); //获取缓存 Lungo.Cache.remove("lungoFramework"); //删除缓存 Lungo.Cache.exists("lungoFramework"); //判断是否已经缓存
但是当浏览器或app关闭就清空了,而且没有全部清空clear()的方法,可以自己根据html5的新特性localstorage自己扩展本地缓存类
Lungo有自己获取dom元素的机制和方法Lungo.dom("")
<section id="main""> <header data-title="Dom Manipulation"></header> <article id="main-article" class="active"> <ul> <li class="dark"> Tap here to change the color </li> </ul> </article> </section> Subscribe to a tap event with a callback Lungo.dom('#main-article li').tap(function(event) { Lungo.dom(this).toggleClass('light').toggleClass('dark'); });因为Lungo是依托于quoJS的,这里有个简单的方法可以简化代码量 $$('#main'),类似于就Query,不过注意这里是两个$符号
滚动效果,这是一个非常实用的功能,可以实现图片的轮播,应用的导航页面(beginner),而且他能很智能的判断滚动中所处的位置、自动跳转到上一个下一个
var example = Lungo.Element.Carousel(el, function(index, element) { Lungo.dom("section#carousel .title span").html(index + 1); }); var example = Lungo.Element.Carousel(el); Lungo.dom('[data-direction=left]').tap(example.prev); var example = Lungo.Element.Carousel(el); Lungo.dom('[data-direction=left]').tap(example.next); Longo.Core.log(1,example.position())
显示特定信息的数量,同设置html属性data-counter=“12”效果一样
Lungo.Element.count("#messages", 12);此方法同样比较使用,可以放到新闻更新的数量,收藏的数量,代办事宜的数量等等
显示加载动画
Lungo.Element.loading("#main-article", 1); //设定显示的标签和时间
官方说是可以实现进度条功能,本人没能调试出来,有高手实现的,可以指点一下小弟哦
拖曳刷新的功能,相信大家无论是在微博或其它新闻客户端上都见过类似的功能
<section id="main" data-pull="normal"> <header data-title="Pull & Refresh"></header> <article id="main-article"> <ul> <li class="dark" data-icon="help"> <strong> Test this featury only drag down. </strong> <small>This element has an associated event</small> </li> </ul> </article> </section> var pull_example = new Lungo.Element.Pull('#main-article', { onPull: "拖拽下拉刷新", //下拉时显示文本 onRelease: "释放加载新数据", //释放是显示文本 onRefresh: "刷新...", //刷新数据显示文本 callback: function() { //回调函数 alert("成功!"); pull_example.hide(); } });
比较遗憾的是LungoJS只支持顶部下来效果,没有地步向上的拖曳效果
控制data-control="menu"导航标签的显示和隐藏
Lungo.Element.Menu.show("options-icons") Lungo.Element.Menu.hide("options-icons") Lungo.Element.Menu.toggle("options-icons")这个方法可以解决前面提到的选择导航menu,不能自动隐藏必须选一个菜单 才能将menu隐藏的问题
var afterNotification = function(){ //Do something }; Lungo.Notification.show( "check", //图标 "Success", //标题 3, //显示时间 afterNotification //可选参数,成功后的回调函数 ); //Show loading screen Lungo.Notification.hide();Lungo.Notification.sucess( "check", //图标 "Success", //标题 "Sucess Desc", //描述信息 3, //显示时间 afterNotification //可选参数,成功后的回调函数 );Lungo.Notification.error( "check", //图标 "UnSuccess", //标题 "UnSuccess Desc", //描述信息 3, //显示时间 afterNotification //可选参数,成功后的回调函数 );Lungo.Notification.confirm({ icon: 'user', title: '确认.', description: 'Description of confirm.', accept: { icon: 'checkmark', label: 'Accept', callback: function(){ alert("Yes!"); } }, cancel: { icon: 'close', label: 'Cancel', callback: function(){ alert("No!"); } } }); Lungo.Notification.html('<h1>Hello World</h1>', "Close");
建上一篇文章的data-view-*部分
控制侧边栏的显示
Lungo.Aside.show("my-aside"); Lungo.Aside.hide(); Lungo.Aside.toggle("my-aside");
Lungo.Article.clean("article_id", "user", "Title", "Description", "Refresh")
也比较实用,可以放在内容更新是使用
配置信息:文档类型,是否跨域,是否异步加载等等
Lungo.Service.Settings.async = true;//异步 Lungo.Service.Settings.error = function(type, xhr){ //Do something }; Lungo.Service.Settings.headers["Content-Type"] = "application/json"; //头文件信息 Lungo.Service.Settings.crossDomain = false; //跨域 Lungo.Service.Settings.timeout = 10; //相应时间
异步获取其它页面信息,可以设定返回值类型json, xml, html, or text,相当好用
var url = "http://localhost:8080/myService"; var data = {id: 25, length: 50}; var parseResponse = function(result){ //Do something }; Lungo.Service.get(url, data, parseResponse, "json"); //Another example var result = Lungo.Service.get(url, "id=25&len=50", null, "json");我记得这里是不能通过这个方法获取返回值的,以为get方法是异步的,这里需要设置才能获取到值
Lungo.Service.Settings.async = false
异步提交数据
同理get()
以日期模式自动缓存页面获取到的信息
var result = Lungo.Service.cache( url, //请求url "id=25&len=50", //参数 "2 hours", //过期时间 null, //回调方法 "json" //缓存类型 );
补充两个我常用的两个方法
1. 重新初始化节点,当向列表等元素中追加内容、改变原有节点属性等有时会用到
Lungo.Boot.Data.init("a[data-view-article='star']");
2. 动态加载页面
Lungo.Resource.load("detail.html", "section#main"); //要加载的页面和将页面加载到哪个section