ms-for 遍历时,如果变量改变,排序会混乱

发布于 2022-09-04 01:28:30 字数 2036 浏览 26 评论 0

  1. 问题描述

要遍历一个json数组,elem超过400个,内容存储的图片信息,如果要直接遍历会很慢,所以采用滚动显示的方式。

  1. 实现思路

一个数组a保存要遍历的内容, 滚动时,将数组中的20个elem,放到数组b中,用ms-for 遍历b数组,依次滚动,修改b数组。

  1. 出现的问题

第一次显示的是从1-20,正确的顺序, 滚动加载后 ,顺序变的混乱 。 尝试了 用 orderby 和 修改数组内容后,sort数组的方法,均没有效果。

  1. 模拟代码

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="./avalon.js"></script>
        <script>
            var vm = avalon.define({
                $id: "test",
                box: [{index:1,name:1},{index:2,name:2},{index:3,name:3},{index:4,name:4},{index:5,name:5},{index:6,name:6},{index:7,name:7},{index:8,name:8},{index:9,name:9},{index:10,name:10},{index:11,name:11},{index:12,name:12},{index:13,name:13},{index:14,name:14},{index:15,name:15},{index:16,name:16},{index:17,name:17},],
                show: [],
                btnshow:function(){
                    var b = JSON.parse(JSON.stringify(vm.box));
                    var s = JSON.parse(JSON.stringify(vm.show));
                    if (b.length - s.length > 4) {
                        s = b.slice(0, s.length + 4);
                    }
                    vm.show = s;
                }
            });
            
        </script>
    </head>

    <body ms-controller="test">
        <button ms-click="@btnshow">增加</button>
        <ul>
           <li ms-for="($index,el) in @show ">
                   <span>{{$index +1}} : </span>
                   <span>{{el.index}}</span>
           </li>
        </ul>
    </body>
</html>

用点击按钮模拟滚动加载

avalon版本2.1.5

效果图

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

却一份温柔 2022-09-11 01:28:30

测试模拟代码在 IE11、Egde、Chrome新版环境下,使用最新版 avalon.js 测试未复现所说问题。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文