大家是否还对这部分知识存在疑问呀,让我来为大家详细解答一下
在上一篇文章中,ios开发培训已经讨论了程序的结构和页面的布局,并简单介绍了一些 Mobile的使用技巧。在本篇文章中,笔者将继续完成我们web应用的新闻浏览器的。
程序的启动
我们现在来研究一下程序的启动。当程序启动的时候,展示给用户的是新闻分类列表的页面,为了让每次这个新闻分类页面不为空,我们需要记下用户之前选择了哪些感兴趣的分类。为了实现这个目的,我们通过使用jQuery的一个插件DST.js plugin去把用户每次选择的新闻分类都保存在的localStorage中。如果用户移除了某个分类,则也会在浏览器中的本地存储区域中移走(注意,要在支持HTML5标准的浏览器中才能实现这个功能)。当页面装载的时候,我们可以在jQuery的$(document).ready()函数中获得已保存的新闻分类并且逐一处理每个新闻分类下的最新新闻,代码如下:
在上面的代码中,photoshop教学软件当用户选择了新闻分类后,会将选择的新闻以逗号的方式连接,存储在变量storedNewsArr中,比如用户选择了“Top Stories”和“Politics”,则在localStorage存储区域中,会包含字符串“topstories,politics”,接着我们调用如下所示的restore()函数:
在restore()方法中,如果不存在新闻分类目录,则我们只需要显示一个空的新闻页。如果存在新闻分类,则调用getNews()方法,并将最新的一个分类作为参数传进去。getNews()方法的另外一个参数是restoreNews,接下来看下getNews()和restoreNews()方法:
getNews()方法中提供了向ajax发起请求的地址varURI,这个uri形如如下的形式:bridge.php?fwd=http://rss.news.yahoo.com/rss/+ varCat,其中varCat就是用户选择的新闻目录,比如bridge.php?fwd=http://rss.news.yahoo.com/rss/topstories。而ajax返回的回调函数为restoreNews()。在restoreNews()中,又调用了一个自定义的方法populateSingleNews(),这个方法稍后会解析。而最后又重新调用了restore方法,形成了一个递归调用,顺序为:
其中参数numNewsToRestore指的photoshop平面设计是用户选择了多少个新闻分类。在jQuery的ready方法中,首先使用插件DST.js plugin把cookie读取出来后,形成了字符串数组storedNewsArr,接着调用restore方法,将storedNewsArr中的最后一个元素(也就是最新用户选择的分类)传入getNews方法中进而获得该分类下的新闻,并通过restoreNews()方法去处理ajax回调返回的内容,最后又再调用restore() 方法处理storedNewsArr数组中的倒数第2个新闻分类,如此类推。
增加新闻分类
现在我们讨论如何增加一个新闻分类,这将在populateSingleNews()中实现。而populateSingleNews()中是根据返回的XML使用jQuery进行解析,将解析后的结果通过jQuery Mobile的UI展现出来。为了方便讨论,先选取一段Yahoo News返回的RSS进行讨论,如下:
上面是Business分类下的两条新闻的RSS XML文件摘录,其中对XML的解析结果会保存在currentNews变量中。接下来,将分步介绍populateSingleNews方法的实现。
1)获得新闻分类和新闻分类的描述
首先,我们调用jQuery的find().first().text()方法去解析xml,分别获得了分类的目录和描述,以上面的xml为例子,得到的结果是tmpTxt='business' 和desc='Business News'.
2) 获得新闻分类的列表
上面的代码,实际上会组合成如下形式的变量:
接下来,为了重用代码,我们编写了如下的代码段:
最后,将上述的代码添加到currentNews后,代码如下:
实际上,以上代码的效果就会使用jQuery中的prependTo()方法,把如下的代码加到id="currentNews"的元素之后,即:
如果你还不是很清楚的话,下面这个图,将生动的讲解了其对应的结构:
图1 新闻分类列表DOM结构图
这里的p标签,即id="cat_business"部分,是稍后用来做动画变化时用到的;
观察这里的标签,这个标签是用来当点右边的删除按钮时,产生的删除事件效果时要用到的Business News;
data-split-icon样式是使用了jQuery Mobile中默认的删除按钮;
The data-split-theme属性指定使用了什么风格样式的删除按钮,这里我们使用了d样式的风格删除按钮,如果不指定的话,默认使用的是a风格样式的按钮。
接下来,我们将讨论
◆处理删除按钮事件
◆处理当用户点每个新闻分类时,struts2 教程跳转到具体的新闻分类下的新闻列表事件
◆学习如何设计新闻分类标题出现时的动画效果
处理删除按钮事件
处理删除按钮事件的代码如下:
还记得categoryLi='cat_business_d_li'么?我们调用了$.doTimeout( categoryLi, false )去实现了当删除新闻分类时,出现的动画效果。$.doTimeout是来自插件jquery-dotimeout-plugin实现的功能,我们在稍侯的动画部分将会详细讨论。接下来找到了新闻分类的标记newListItem并使用jQuery的remove()方法将其删除。在删除新闻分类后,再调用storeCurrentNews()方法,重新将当前剩下的新闻分类进行保存,这个方法稍后会详细讨论。
查看新闻页
当用户点某个新闻分类的标题后,就会跳转到新闻列表页,其中会列出所选新闻分类下的新闻,代码如下:
我们找到了标签categoryA,这个值其实就是新闻分类标题的id值,即:
接着,调用showProgress去显示等待进度的图标。
还记得我们之前的category变量为'cat_business'么?这里我们用substring(4)方法,取得了实际的分类名,也就是business。
这里再次调用了getNews方法,但这次回调的函数是populateNewsItems,稍后会详细介绍。
显示新闻标题时的动画效果
populateSingleNews方法中的最后一个部分就是当每个分类下有最新新闻时,动画显示其新闻标题的效果,将其内容显示在
中,代码如下:
首先通过find()和each方法将XML中的新闻标题(即RSS XML中的title标签中的内容)保存到数组newsArray中。
接着将newsArray数组中的第1个元素,也就是最新的一条新闻,通过jQuery的text方法放到
标签中去。
之后调用jQuery Mobile中封装好的listview的refresh方法,就可以刷新当前目录区域内的内容。
最后,调用animate方法,其中传入的参数是newsArray数组,
标签和当前目录分类的区域标签(categoryLi='cat_business_d_li'),下面来讲解下如何实现动画效果。
动画效果
代码如下:
在显示动画的方法中,pArr参数是传入的新闻列表,animationTarget是最新新闻要显示的位置区域。而通过使用jquery-dotimeout-plugin这个插件去实现最新新闻的淡入淡出显示,这个插件的效果有点象Javascript中的setTimeout()方法。这里我们定义了每隔2秒,就显示新闻列表数组pArr中的内容。
而这个动画效果会持续运行下去,但持续到什么时候结束呢?将会知道执行$.doTimeout(…,false)时才结束。还记得在populateSingleNews方法中,在删除新闻分类时,有一行$.doTimeout(categoryLi, false)么?这里实际上就是说在删除新闻分类前,先停止动画效果的更新。
查看新闻详细页的编写
现在我们来看下,当用户点某个新闻分类标题后,将会跳转到列出该分类下的新闻列表这个功能如何实现,为方便起见,先以如下的RSS XML为例子进行说明:
下面看下populateNewsItems()的编写:
';
我们通过jQuery的find()和each()解析XML,对于每个item元素,取出其新闻的详细内容即description子元素内容放到变量txt中去,最后用
将其包裹起来,并最后加上一个水平线作为分隔。
最后通过jQuery的html()方法将
在本文中,介绍了如何使用jQuery Mobile去实现一个web版本的新闻阅读器,其中讲解了jQuery Mobile及jquery-dotimeout插件,jquery.dst插件的使用。
大家学到了多少?如果意犹未尽,可前往课课家官网直接查看 。
¥398.00
¥179.00
¥98.00
¥199.00