激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - mustache.js實現首頁元件動態渲染的示例代碼

mustache.js實現首頁元件動態渲染的示例代碼

2021-12-21 18:05code2roc js教程

這篇文章主要介紹了mustache.js實現首頁元件動態渲染的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

在項目開發過程中,特別是OA類軟件,會針對郵件/待辦/公告等模塊在主頁面進行快捷查看的元件展示要求,類似效果如下

mustache.js實現首頁元件動態渲染的示例代碼?

針對框架層面,我們可以進行后臺的可視化配置,使用mustache.js在主頁面進行動態渲染,避免了對主頁面的繁瑣的硬編碼工作,同時針對每個信息展示的元件進行內部個性化處理

表結構

mustache.js實現首頁元件動態渲染的示例代碼?

包含了元件名稱,元件模板路徑,元件列表數據路由,查看更多路由,啟用/禁用等

可視化配置

mustache.js實現首頁元件動態渲染的示例代碼?

mustache.js實現首頁元件動態渲染的示例代碼?

模板定義

這里的模板直接使用的html文件,方便css與js的修改,簡單的使用了mustache.js進行模板數據綁定,當然也可以使用其他模板引擎

<div class="cellheadcontainer">
 <span class="celltitletext">{{elementtitle}}</span>
 <div class="celltitleop">
  <a style="color:white" class="morebtn" onclick="OpenMore("{{elementmoreurl}}")">更多</a>
 </div>
</div>
<div class="cellcontentcontainer">
 {{#data}}
 <div class="notciecell" onclick="OpenDetail("{{title}}")">
  <div class="noticeleft">
   <span class="noticetitle noticeindex">{{index}}</span>
   <span class="noticetitle">{{title}}</span>
  </div>
  <div class="noticeright">
   <span class="noticetip">{{publishuname}}</span> 
   <span class="noticetip">{{publishdate}}</span>
  </div>
 </div>
 {{/data}}
</div>
<script>
 var noticeid = "{{elementid}}";
 function OpenMore(url) {
  OpenTopDialog( "消息通知列表", url, 600, 800, BindNotcieList)
 }
 function BindNotcieList() {
  CommonRefresh(noticeid);
 }
 function OpenDetail(title) {
  OpenTopDialog("消息詳情", "frame/demo/notice/noticeDetail", 600, 800, BindNotcieList, title)
 }
</script>

主頁面模板渲染

主要是針對當前配置的模板進行分組,渲染每行每列的元件,模板文字內容在后端處理獲取完成,前端調用Mustache.render方法進行數據的填充,同時需要注意針對每個元件定義局部刷新的方法,避免操作完畢后針對主頁面整體刷新

<body>
 <div id="app">
  <div id="maincontainer">
   <div class="rowcontainer">
    <div class="columncontainer">

    </div>
   </div>
  </div>
 </div>
 <script>
  loadcss(getRootPath() + "theme/" + GetSystemTheme() + "/main.css", true)
 </script>
 <script>
  var pageData = {
   ElementList: [],
   groupCount: 0,
   rowElementCount: 2
  };
  $(function () {
   BindElement();
  })

  function BindElement() {
   var param = {};
   CloudPost(param, GetRootPath() + "frame/extend/element/findMainPageElementList", function (res) {
    if (res.code == 0) {
     pageData.ElementList = res.data;
     var rowelementcount = pageData.rowElementCount
     var groupcount = pageData.ElementList.length % rowelementcount == 0 ? pageData
      .ElementList
      .length / rowelementcount : (parseInt(pageData.ElementList.length /
       rowelementcount)) +
      1;
     pageData.groupCount = groupcount;
     var MainHtml = "";
     for (var i = 0; i < groupcount; i++) {
      var RowHtml = " <div class="rowcontainer">";
      for (var j = 0; j < rowelementcount && i * groupcount + j < pageData.ElementList.length; j++) {
       var id = "row_" + (i + 1) + "column_" + (j + 1);
       var ColumnHtml = "<div class="columncontainer" id="" + id + "">"
       ColumnHtml += "</div>"
       RowHtml += ColumnHtml;
      }
      RowHtml += "</div>";
      MainHtml += RowHtml;
     }
     $("#maincontainer").html(MainHtml);

     for (var i = 0; i < groupcount; i++) {
      for (var j = 0; j < rowelementcount && i * groupcount + j < pageData.ElementList.length; j++) {
       var index = i * rowelementcount + j
       var element = pageData.ElementList[index];
       var id = "row_" + (i + 1) + "column_" + (j + 1);
       pageData.ElementList[index]["ElementID"] = id;
       var renderdata = {
        elementtitle: element.ElementName,
        elementmoreurl: element.ElementMoreUrl,
        elementid: id
       }
       //刷新事件存儲

       pageData.ElementList[index]["RefreshEvent"] = function () {
        //請求數據
        CloudPost({}, GetRootPath() + element.ElementDataUrl,
         function (res) {
          if (res.code == 0) {
           //合并json
           for (var attr in res) {
            renderdata[attr] = res[attr];
           }
           var htmlcontent = Mustache.render(element.TemplatContent, renderdata);
           $("#" + id).html(htmlcontent);
          }
         })
       }
       //請求數據
       CommonRefresh(id);
      }
     }
    } else {
     OpenFail(res.data)
    }
   })
  }

  function CommonRefresh(id) {
   $(pageData.ElementList).each(function () {
    if (this.ElementID == id) {
     this.RefreshEvent();
    }
   })
  }
 </script>

</body>

到此這篇關于mustache.js實現首頁元件動態渲染的文章就介紹到這了,更多相關mustache.js首頁元件動態渲染內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/yanpeng19940119/archive/2020/12/27/14196971.html

延伸 · 閱讀

精彩推薦
  • js教程mustache.js實現首頁元件動態渲染的示例代碼

    mustache.js實現首頁元件動態渲染的示例代碼

    這篇文章主要介紹了mustache.js實現首頁元件動態渲染的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可...

    code2roc4192021-12-21
  • js教程js+for循環實現字符串自動轉義的代碼(把后面的字符替換前面的字符)

    js+for循環實現字符串自動轉義的代碼(把后面的字符替換前面的字

    這段代碼是從網上看到的一段不錯的代碼,用for命令實現字符串的轉移,而且使用的是for循環直接將后面的字符替換成前面的字符,這個邏輯以前沒試過...

    js教程網3962021-12-18
  • js教程Jquery+javascript實現支付網頁數字鍵盤

    Jquery+javascript實現支付網頁數字鍵盤

    這篇文章主要為大家詳細介紹了Jquery+javascript實現支付網頁數字鍵盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    юноша 25662021-12-15
  • js教程微信小程序自定義modal彈窗組件的方法詳解

    微信小程序自定義modal彈窗組件的方法詳解

    這篇文章主要給大家介紹了關于微信小程序自定義modal彈窗組件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學...

    遇見小美好11922021-12-15
  • js教程JS 的 六種打斷點的方式,你用過幾種?

    JS 的 六種打斷點的方式,你用過幾種?

    Debugger 是前端開發很重要的一個工具,它可以在我們關心的代碼處斷住,通過單步運行來理清邏輯。而 Debugger 用的好壞與斷點打得好壞有直接的關系。...

    神光的編程秘籍7772021-12-16
  • js教程微信小程序視頻彈幕發送功能的實現

    微信小程序視頻彈幕發送功能的實現

    這篇文章主要介紹了微信小程序視頻彈幕發送功能的實現,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的...

    保護我方豆豆4762021-12-21
  • js教程原生JS實現pc端輪播圖效果

    原生JS實現pc端輪播圖效果

    這篇文章主要為大家詳細介紹了原生JS實現pc端輪播圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    qq_1519846510032021-12-15
  • js教程ES6字符串的擴展實例

    ES6字符串的擴展實例

    這篇文章主要介紹了ES6字符串的擴展實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小...

    知否5472021-12-16
主站蜘蛛池模板: 成人区精品一区二区婷婷 | 九九热精品视频在线 | 黄色片免费看看 | 欧美成人一区二区三区电影 | 超级av在线| 亚洲成人入口 | 国产高潮好爽受不了了夜色 | 欧美黄色三级视频 | jizzjizzxxxxx| 羞羞漫画无遮挡观看 | 精品99在线视频 | 久久网站免费 | 成人一区三区 | 97超碰资源站 | 国产资源在线免费观看 | 成人在线观看污 | 精品久久久久久中文字幕 | 最近高清无吗免费看 | 一级毛片电影网 | 日韩专区在线 | 毛片视频在线免费观看 | 综合97| 亚洲欧美在线看 | 亚洲第一成av人网站懂色 | 超久久 | 午夜精品一区二区三区免费 | 国产一区毛片 | 国产成人精品区一区二区不卡 | 日韩精品中文字幕一区二区三区 | 亚洲成人精品久久久 | 久久久久久亚洲国产精品 | 狠狠色噜噜狠狠狠米奇9999 | 国产一区二区视频网站 | 久久精品欧美一区二区三区不卡 | 日韩大片在线永久观看视频网站免费 | 精品国内视频 | 毛片中文字幕 | 日本不卡中文字幕 | 电影av在线| 思思久而久而蕉人 | 久久欧美亚洲另类专区91大神 |