LayUI-低版本flow组件的“加载更多”文本动态更改

LayUI版本:2.8.1

需求:

对flow组件的“加载更多”文本有多语言的处理,需随语言变化更改

但flow组件的“加载更多”文本在2.9.11以上版本才实现自定义

 

组件页面的结构

 

解决方法

通过监视“加载更多“的上层标签来实现文本动态变更

 

代码如下

 var moreText = "@Localizer["LoadMore"]";//加载更多-多语言
/*
* * flow 加载更多-多语言处理 */ const callback = function (mutationsList, observer) { for (let mutation of mutationsList) { if (mutation.type === 'childList') { mutation.addedNodes.forEach(i => { if (i.nodeName == 'CITE') {//加载更多标签为CITE i.lastChild.data = moreText //moreText为多语言内容 i.firstChild.data = moreText } }) } } };
//创建观察者实例 const observer
= new MutationObserver(callback);
function replaySearch() { flow.load({ elem: '#content', // 流加载容器 scrollElem: '#content', // 滚动条所在元素,一般不用填,此处只是演示需要。 // isAuto: true, // isLazyimg: true, end: endStr, // moreText: moreText,//2.8.1版本不支持 done: function (page, next) { // 加载下一页 //flow 加载更多-多语言处理 const targetNode = $('.layui-flow-more a')[0]// document.getElementsByClassName('layui-flow-more')[0].children[0] const config = { attributes: true, childList: true, subtree: true }; observer.observe(targetNode, config);//观察对象flow组件变化 //下一页加载 setTimeout(function(){ var lis = []; for(var i = 0; i < 8; i++){ lis.push('<li>'+ ( (page-1)*8 + i + 1 ) +'</li>') } // 执行下一页渲染,第二参数为:满足“加载更多”的条件,即后面仍有分页 // pages 为 Ajax返回的总页数,只有当前页小于总页数的情况下,才会继续出现加载更多 next(lis.join(''), page < 10); // 此处假设总页数为 10 }, 520); } }); }

 

observe 方法的配置项

attributes: 当元素的属性变化时触发回调(默认为 false)。
childList: 当目标节点的子节点被添加或删除时触发回调(默认为 false)。
subtree: 当设置为 true 时,监视目标节点及其所有后代节点的变化(默认为 false)。
characterData: 当节点的文本内容变化时触发回调(默认为 false)。
attributeOldValue: 当属性变化时,记录变化前的属性值(默认为 false)。
characterDataOldValue: 当文本节点变化时,记录变化前的文本内容(默认为 false)。
attributeFilter: 一个属性名称的数组,指定监听的属性变化(如果不设置,则监听所有属性)。

因后续异常变更代码具体参考异常处理

var moreText = "@Localizer["LoadMore"]";//加载更多-多语言

//创建观察者实例
var observer = new MutationObserver(flowCallback);

/**
 * flow 加载更多-多语言处理
 */
function flowCallback(mutationsList, observer) {
    for (let mutation of mutationsList) {
        if (mutation.type === 'childList') {
            mutation.addedNodes.forEach(i => {
                if (i.nodeName == 'CITE') {
                    i.lastChild.data = moreText
                    i.firstChild.data = moreText
                }
            })
        }
    }
}

function replaySearch() {
         flow.load({
             elem: '#content', // 流加载容器
             scrollElem: '#content', // 滚动条所在元素,一般不用填,此处只是演示需要。
             // isAuto: true,
             // isLazyimg: true,
             end: endStr,
             // moreText: moreText,//2.8.1版本不支持
             done: function (page, next) { // 加载下一页
                 //flow 加载更多-多语言处理
                 const targetNode = $('.layui-flow-more a')[0]// document.getElementsByClassName('layui-flow-more')[0].children[0]
                 const config = { attributes: true, childList: true, subtree: true };
                 observer.observe(targetNode, config);//观察对象flow组件变化
                 //下一页加载
                 setTimeout(function(){
                    var lis = [];
                    for(var i = 0; i < 8; i++){
                      lis.push('<li>'+ ( (page-1)*8 + i + 1 ) +'</li>')
                    }
                    
                    // 执行下一页渲染,第二参数为:满足“加载更多”的条件,即后面仍有分页
                    // pages 为 Ajax返回的总页数,只有当前页小于总页数的情况下,才会继续出现加载更多
                    next(lis.join(''), page < 10); // 此处假设总页数为 10
                  }, 520);
             }
    });
 }

 

posted @ 2025-02-27 18:37  流年sugar  阅读(36)  评论(0)    收藏  举报