js拼接html不顯示layui進度條(多個進度條)的2個解決方法


最新有個新需求,要異步拼接html並渲染數據,並且我這邊是用layui的flow.load(流加載)渲染多個進度條。

按官網給出的 element.progress('demo', n+'%'); 就是回顯不出來。

 

 

 

 

 

 兩種解決方法

一。html拼接完之后加上 element.init(); 

1.代碼如下:

layui.use(['element', 'flow'], function () {
var element = layui.element,
flow = layui.flow
;
  
flow.load({
elem: tabId
, isAuto: true
, isLazyimg: true
, done: function (page, next) {
 var initDataList = [];
 //這里是調用后台接口返回數據代碼
      var itemHtml = "";
      itemHtml += '<div class="layui-progress coupon-percent" lay-showpercent="true">';
      itemHtml += ' <div class="layui-progress-bar layui-bg-red" lay-percent="50%"></div>';
      itemHtml += '</div>';
      initDataList.push(html);
      next(initDataList.join(''), page < 10);
      element.init();
    }
  });
});


二。
查看了下layui的進度條渲染原理,發現它只是在 calss 為 layui-progress-bar 的節點加上 width 屬性而已,
所以我們在拼接html時補上去就可以回顯了,如果要顯示文字的話就在那個節點把
<span class="layui-progress-text">xx%</span> 這個節點拼接上去。
(這里可以不用添加 element.init(); 也可以回顯)

 

 1.代碼如下

layui.use(['element', 'flow'], function () {
var element = layui.element,
flow = layui.flow
;
  
flow.load({
elem: tabId
, isAuto: true
, isLazyimg: true
, done: function (page, next) {
var initDataList = [];
//這里是調用后台接口返回數據代碼
    var itemHtml = "";
    itemHtml += '<div class="layui-progress coupon-percent" lay-showpercent="true">';
    itemHtml += '<div class="layui-progress-bar layui-bg-red" lay-percent="50%" style="width: 50%">';
    itenHtml += '<span class="layui-progress-text">50%</span></div>';
    itemHtml += '</div>';
    initDataList.push(html);
    next(initDataList.join(''), page < 10);
   }
  });
});

效果如圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM