免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2220 | 回复: 1
打印 上一主题 下一主题

移动web开发学习一:jquery mobile 和 scrollview的整合 2.............. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-10 11:50 |只看该作者 |倒序浏览
移动web开发学习一:jquery mobile 和 scrollview的整合 2..............








这里不是业务代码,基本上就是定义了一些函数。
8757.app.js
Javascript代码
  1. // 本地化命名空间   
  2. var utils = convage_mobile.utils,   
  3.     controllers = convage_mobile.controllers,   
  4.     website = convage_mobile.website,   
  5.     cpage = 1   
  6. // 模板   
  7.   
  8. function tplMmInfo(array, items){   
  9.     for(var i in items){   
  10.         var item = items[i]   
  11.         var memo = ' 人气: ' + item.allVisiteCount + '    城市: ' + item.nowCity + '    星座:  ' + item.constellation   
  12.         var li = '<li  data-icon="false"><a href="#discussion" data-id="'+ item.userId +'"><img src="'+ website + item.headPic +'"/><h3>' + item.nick + '</h3><p>'+ memo +'</p></a></li>'  
  13.         array.push(li)   
  14.     }   
  15. }   
  16.   
  17. var refreshList = function(clear_flag){   
  18.     var $listview = $('#index').find('ul[data-role="listview"]')   
  19.     $('#div_loading').css('display', 'block')   
  20.     if(clear_flag){   
  21.         $listview.html('')     
  22.     }   
  23.     $.getJSON(   
  24.             utils.uuUrlGen(website + '/mclient/m!mmList.jhtml?callback=?'),   
  25.             {   
  26.                 cpage: cpage,   
  27.                 type: $('#select_type').val()   
  28.             },   
  29.             function(data) {   
  30.                 var json = data[0]                     
  31.                 var li_array = []   
  32.                 tplMmInfo(li_array, json.result)                  
  33.                 if(clear_flag){   
  34.                     $listview.html(li_array.join(''))      
  35.                 }else{   
  36.                     $listview.append(li_array.join(''))               
  37.                 }   
  38.                 $listview.listview('refresh')      
  39.                   
  40.                 cpage ++   
  41.                   
  42.                 $('#div_loading').css('display', 'none')   
  43.             }   
  44.       );   
  45.                   
  46.       
  47. }   
  48.   
  49. controllers.index = {   
  50.     pagecreate : function(event){   
  51.         refreshList();   
  52.         $("#getMore").bind( "click", function(event, ui) {   
  53.             refreshList(false);   
  54.         });   
  55.         $("#select_type").bind( "change", function(event, ui) {   
  56.             cpage = 1;   
  57.             refreshList(true);   
  58.         });   
  59.     }   
  60. }   
  61.   
  62. var pages = [   
  63.     {id: 'index', event:'pagecreate'}   
  64. ]   
  65. convage_mobile.run(pages)  

  66. // 本地化命名空间
  67. var utils = convage_mobile.utils,
  68.         controllers = convage_mobile.controllers,
  69.         website = convage_mobile.website,
  70.         cpage = 1
  71. // 模板

  72. function tplMmInfo(array, items){
  73.         for(var i in items){
  74.                 var item = items[i]
  75.                 var        memo = '&nbsp;人气:&nbsp;' + item.allVisiteCount + '&nbsp;&nbsp;&nbsp;&nbsp;城市:&nbsp;' + item.nowCity + '&nbsp;&nbsp;&nbsp;&nbsp;星座:&nbsp; ' + item.constellation
  76.                 var        li = '<li  data-icon="false"><a href="#discussion" data-id="'+ item.userId +'"><img src="'+ website + item.headPic +'"/><h3>' + item.nick + '</h3><p>'+ memo +'</p></a></li>'
  77.                 array.push(li)
  78.         }
  79. }

  80. var refreshList = function(clear_flag){
  81.         var $listview = $('#index').find('ul[data-role="listview"]')
  82.         $('#div_loading').css('display', 'block')
  83.         if(clear_flag){
  84.                 $listview.html('')       
  85.         }
  86.         $.getJSON(
  87.                         utils.uuUrlGen(website + '/mclient/m!mmList.jhtml?callback=?'),
  88.                         {
  89.                                 cpage: cpage,
  90.                                 type: $('#select_type').val()
  91.                         },
  92.                         function(data) {
  93.                                 var json = data[0]                                       
  94.                                 var li_array = []
  95.                                 tplMmInfo(li_array, json.result)                               
  96.                                 if(clear_flag){
  97.                                         $listview.html(li_array.join(''))       
  98.                                 }else{
  99.                                         $listview.append(li_array.join(''))                               
  100.                                 }
  101.                                 $listview.listview('refresh')       
  102.                                
  103.                                 cpage ++
  104.                                
  105.                                 $('#div_loading').css('display', 'none')
  106.                         }
  107.           );
  108.                                
  109.        
  110. }

  111. controllers.index = {
  112.         pagecreate : function(event){
  113.                 refreshList();
  114.                 $("#getMore").bind( "click", function(event, ui) {
  115.                         refreshList(false);
  116.                 });
  117.                 $("#select_type").bind( "change", function(event, ui) {
  118.                         cpage = 1;
  119.                         refreshList(true);
  120.                 });
  121.         }
  122. }

  123. var pages = [
  124.         {id: 'index', event:'pagecreate'}
  125. ]
  126. convage_mobile.run(pages)
复制代码
看代码,一般都是倒退,前面的var定义暂且忽略,最后一行
Javascript代码
  1. convage_mobile.run(pages)  

  2. convage_mobile.run(pages)
复制代码
是调用了core.js的run方法,然后回到这个文件研究一下这个方法,发现就是从pages里面一个个去注册事件,因为只是个DEMO,就写了index这个页面的渲染过程,发现他的event是pagecreate,就是当页面进入之时,要执行的方法,更多说明见:
http://www.jqmapi.com/api/events.html
注册的是这个事件
Javascript代码
  1. controllers.index = {   
  2.     pagecreate : function(event){   
  3.         refreshList(true);   
  4.         $("#getMore").bind( "click", function(event, ui) {   
  5.             refreshList(false);   
  6.         });   
  7.         $("#select_type").bind( "change", function(event, ui) {   
  8.             cpage = 1;   
  9.             refreshList(true);   
  10.         });   
  11.     }   
  12. }  

  13. controllers.index = {
  14.         pagecreate : function(event){
  15.                 refreshList(true);
  16.                 $("#getMore").bind( "click", function(event, ui) {
  17.                         refreshList(false);
  18.                 });
  19.                 $("#select_type").bind( "change", function(event, ui) {
  20.                         cpage = 1;
  21.                         refreshList(true);
  22.                 });
  23.         }
  24. }
复制代码
第一步是刷新列表refreshList();然后又定义了两个事件监听,第一个是点“更多”时再刷新一次,第二个是选择select时刷新列表,分别对应content 里的三个部分。refreshList带了一个参数,我们来看一下代码
Javascript代码
  1. var refreshList = function(clear_flag){   
  2.     var $listview = $('#index').find('ul[data-role="listview"]')   
  3.     $('#div_loading').css('display', 'block')   
  4.     if(clear_flag){   
  5.         $listview.html('')     
  6.     }   
  7.     $.getJSON(   
  8.             utils.uuUrlGen(website + '/mclient/m!mmList.jhtml?callback=?'),   
  9.             {   
  10.                 cpage: cpage,   
  11.                 type: $('#select_type').val()   
  12.             },   
  13.             function(data) {   
  14.                 var json = data[0]                     
  15.                 var li_array = []   
  16.                 tplMmInfo(li_array, json.result)                  
  17.                 if(clear_flag){   
  18.                     $listview.html(li_array.join(''))      
  19.                 }else{   
  20.                     $listview.append(li_array.join(''))               
  21.                 }   
  22.                 $listview.listview('refresh')      
  23.                   
  24.                 cpage ++   
  25.                   
  26.                 $('#div_loading').css('display', 'none')   
  27.             }   
  28.       );   
  29.                   
  30.       
  31. }  

  32. var refreshList = function(clear_flag){
  33.         var $listview = $('#index').find('ul[data-role="listview"]')
  34.         $('#div_loading').css('display', 'block')
  35.         if(clear_flag){
  36.                 $listview.html('')       
  37.         }
  38.         $.getJSON(
  39.                         utils.uuUrlGen(website + '/mclient/m!mmList.jhtml?callback=?'),
  40.                         {
  41.                                 cpage: cpage,
  42.                                 type: $('#select_type').val()
  43.                         },
  44.                         function(data) {
  45.                                 var json = data[0]                                       
  46.                                 var li_array = []
  47.                                 tplMmInfo(li_array, json.result)                               
  48.                                 if(clear_flag){
  49.                                         $listview.html(li_array.join(''))       
  50.                                 }else{
  51.                                         $listview.append(li_array.join(''))                               
  52.                                 }
  53.                                 $listview.listview('refresh')       
  54.                                
  55.                                 cpage ++
  56.                                
  57.                                 $('#div_loading').css('display', 'none')
  58.                         }
  59.           );
  60.                                
  61.        
  62. }
复制代码
参数clear_flag发现是有两个用途,如果为true,listview清空,然后在getJson后,判断,如果为tue,则直接html,意思是替换listview代码,如果是false,则插入从云服务器上获取的数据,在业务上即分别对应了两个按钮,需要清空的是选择select,需要添加的是"更多..."
Javascript代码
  1. if(clear_flag){   
  2.                     $listview.html(li_array.join(''))      
  3.                 }else{   
  4.                     $listview.append(li_array.join(''))               
  5.                 }  

  6. if(clear_flag){
  7.                                         $listview.html(li_array.join(''))       
  8.                                 }else{
  9.                                         $listview.append(li_array.join(''))                               
  10.                                 }
复制代码
剩下的JS代码就是解析 JSON了,多说无益了。我上传了附件,附件里包含了源代码,及已经打包好的APK,大家可自行研究。
另外要研究打包的,可看下面文章
http://www.html5mobi.com/discussion/167/phonegap-web-android

论坛徽章:
0
2 [报告]
发表于 2012-01-10 11:50 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP