久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

APICloud 社區(qū)從1開始學晉城(二)

 智博文化傳播 2016-10-03
 本帖最后由 老郵局 于 2015-7-23 20:47 編輯 



上一篇我們說道底部導航欄中的openTab(),,用于打開不同的header和main,這里我們說“首頁”中main部分:

1,、首頁中的main可以分為三個部分:幻燈片(紅色),、常用分類(藍色)、活動分類(綠色)
2,、藍色部分界面是固定的,,我們使用本地圖片寫死在程序里面
3,、紅色和綠色部分,,我們希望可以根據服務器內容實時的更新。

首先藍色部分我們按下不表,“脈脈”中已經表過啦,;我們的主要精力放在幻燈片部分,。








紅色部分(幻燈片):
簡要描述下數據調用過程:
1,、連接服務器,,查詢數據庫并返回
        當首次初始化此頁面,會調用getData(), 函數會鏈接到服務器,,查詢數據庫中的數據返回到程序中進行顯示,。由于數據是動態(tài)的,所以html中我們就不能寫死,,要用變量代替,以便數據進行替換,。
main.js
  1. 40  function getData(){
  2. 41          api.showProgress({
  3. 42                  title:'加載中',
  4. 43                  model:false
  5. 44          });
  6. 45
  7. 46          var model = api.require('model');       //
  8. 47          var query = api.require('query');
  9. 48
  10. 49        model.config({
  11. 50                appKey:'02***07C-****-C2FF-****-F816****D17A',                 //appKey,apicloud后臺可獲得
  12. 51                host:'https://d.'
  13. 52        });
  14. 53        query.createQuery(function(ret,err){
  15. 54                if (ret && ret.qid){                                                                            // 如果成功返回句柄ret.qid
  16. 55                        var queryId = ret.qid;
  17. 56                        model.findAll({class:"activity",qid:queryId},function(ret,err){// 查詢表activity中所有內容
  18. 57                               if (ret){
  19. 58                                        var content = $api.byId('act-content');                  // 獲取幻燈片顯示容器
  20. 59                                        var tpl = $api.byId('act-template').text;                 // 獲取模板引擎的內容,,以便21行進行模板的編譯,,后面會說
  21. 60                                        var tempFn = doT.template(tpl);                            // 根據模板的內容,進行編譯,,其實就是生成一個匿名函數
  22. 61                                        content.innerHTML = tempFn(ret);                        // 根據實際數據,,填充模板
  23. 62
  24. 63                                        api.hideProgress();
  25. 64                                }else{
  26. 65                                        //error
  27. 66                               }
  28. 67                        });
  29. 68                }
  30. 69        });
  31. 70  }
復制代碼

getData()完成了連接服務器數據庫,查詢數據并返回,。就固定這么寫的,,幾個api調用。
行18中,,ret變量就是查詢后服務器返回的數據:

一個標準json格式的對象數組


2,、經模板引擎生成靜態(tài)html內容
        第一步中,服務器返回了數據ret,,緊接著交給模板引擎進行渲染(行58-61),,就是按照模板中的定義進行數據的格式化輸出。
(我們引用的是第三方的模板引擎doT.js)
main.html
  1. 14 <script type="text/javascript" src="../script/doT.min.js"></script>
復制代碼
我們先看下模板怎么定義的
main.html
  1. 15  <script id="banner-template" type="text/x-dot-template">   
  2. 16          {{ for(var i=0; i<it.length; i++) { }}
  3. 17                  <div>
  4. 18                          <img src="{{=it[i].poster.url}}" />
  5. 19                          <label><div class="blur"></div>{{=it[i].title}}</label>
  6. 20                   </div>
  7. 21          {{ } }}
  8. 22  </script>
  9. 23  <div id='slide' class='swipe'>
  10. 24          <div class='swipe-wrap' id="banner-content">    // 這個div是幻燈片的容器
  11. 25          </div>
  12. 26          <ul id="pointer">
  13. 27                  <li><a class="active"></a></li>
  14. 28                  <li><a></a></li>
  15. 29                  <li><a></a></li>
  16. 30          </ul>
  17. 31  </div>
復制代碼
行15-22定義模板,,前面提到的getData()會將返回的json數據傳遞給模板引擎,,然后根據返回數據的條數(it.length)生成對應數量的div
行24是幻燈片的div,,上一步生成的div全部要放到這個div容器中,。


還是云里霧里的哈,我們看看模板引擎到底是如何使用和工作(行58-61):

1,、在html中定義模板引擎,,包括模板(行15-21),、用于顯示模板的容器(行24)
2,、在js中,,找到用于顯示模板的容器,然后將模板編譯的內容塞進容器中,。

main.js
  1. 58  var content = $api.byId('act-content');         // 找到用于顯示模板的容器
  2. 59  var tpl = $api.byId('act-template').text;        // 找到模板變量
  3. 60  var tempFn = doT.template(tpl);                   // 進行模板的編譯(生成匿名函數,,用于處理生成最終html)
  4. 61  content.innerHtml = tempFn(ret);                 // 根據所給數據組裝成靜態(tài)的html
復制代碼
(行60) , 進行模板編譯,將會生成如下函數:
  1. function anonymous(it) {
  2.         var out='';
  3.         for(var i=0; i<it.length; i++) {
  4.                 out+=' <div> <img src="'+(it[i].poster.url)+'" /> <label><div class="blur"></div>'+(it[i].title)+'</label> </div>';
  5.         }
  6.         return out;
  7. }
復制代碼
(行61),,進行賦值,,最終生成靜態(tài)的html代碼:
main.html
  1. 30  <div id='slide' class='swipe'>
  2.               <div class='swipe-wrap' id="banner-content">    //幻燈片
  3.                       <div>       // 第一張幻燈片,包括圖片和標題
  4.                               <img src="http://file." />
  5.                               <label><div class="blur"></div>APICloud</label>
  6.                       </div>
  7.                       <div>       // 第二張幻燈片
  8.                               <img src="http://www." />
  9.                               <label><div class="blur"></div>0hi猿團</label>
  10.                       </div>
  11.                       <div>       // 第三張幻燈片
  12.                               <img src="http://,。,。。" />
  13.                               <label><div class="blur"></div>毛豆</label>
  14.                       </div>
  15.                </div>
  16.           ..........................
  17.       </div>
復制代碼
Sorry,,我還沒完呢,,我們再來做幻燈片右下角那個小導航:
main.html
  1. 33 <ul id="pointer">
  2. 34         <li><a class="active"></a></li>
  3. 35         <li><a></a></li>
  4. 36         <li><a></a></li>
  5. 37 </ul>
復制代碼
main.js
  1. 1  function initSlide(){
  2. 2          var slide = $api.byId('slide');
  3. 3          var pointer = $api.domAll('#pointer a');
  4. 4          window.mySlide = Swipe(slide, {  // 初始化 swipe.js
  5. 5          // startSlide: 2,                                // 起始幻燈片        
  6. 6          auto: 3000,                                      // 自動切換時間間隔
  7. 7          continuous: true,                            // 是否循環(huán)滑動,默認值為true
  8. 8          disableScroll: true,                          // 停止任何觸及此容器上滾動頁面,,默認值flase
  9. 9          stopPropagation: true,                   // 停止事件傳播
  10. 10        callback: function(index, element) {
  11. 11                var actPoint = $api.dom('#pointer a.active');     // 前一個被激活的小圓點
  12. 12                $api.removeCls(actPoint,'active');                        // 去掉激活樣式
  13. 13                $api.addCls(pointer[index],'active');                    // 添加激活樣式
  14. 14        },
  15. 15                transitionEnd: function(index, element) {          // 滑動過渡時調用的函數
  16. 16
  17. 17                }
  18. 18        });
  19. 19  }
復制代碼


另外,,大家注意到沒有,apicloud的端api中有一個幻燈片實現scrollPicture組件,,這里并沒有采用,,而是引入第三方的幻燈片插件swipe.js。主要原因在于scrollPicture組件會浮動在頁面上,,不會隨頁面下拉而下拉,,所以咯。,。,。運行swipe.js非常簡單,三步走:
1,、html中布局
  1. <div id='slider' class='swipe'>
  2.         <div class='swipe-wrap'>
  3.                 <div>APICloud</div>
  4.                 <div>0hi猿團</div>
  5.                 <div>毛豆</div>
  6.         </div>
  7. </div>
復制代碼
2,、js中添加時間代碼
  1. window.mySwipe = Swipe(document.getElementById('slider'));
復制代碼
3、css中添加基本樣式:
  1. .swipe {
  2.         overflow: hidden;
  3.         visibility: hidden;
  4.         position: relative;
  5. }
  6. .swipe-wrap {
  7.         overflow: hidden;
  8.         position: relative;
  9. }
  10. .swipe-wrap > div {
  11.         float:left;
  12.         width:100%;
  13.         position: relative;
  14. }
復制代碼



文章導航:
從1開始學晉城(一) —— 概覽
從1開始學晉城(二) —— 首頁main部分
從1開始學晉城(三) —— 藍色樣式

從1開始學晉城(四) —— 熱門活動
從1開始學晉城(五) —— 下拉菜單

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現有害或侵權內容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多