vm中有嵌套数组,用ms-for循环绑定此嵌套数组,删除数组元素的时候会报错

发布于 2022-09-03 19:20:57 字数 2169 浏览 17 评论 0

1. 问题描述

场景:vm中定义了一个嵌套数组:
var configVm = avalon.define({
        ...
        arr: [
            ["arr_1", "arr_2"],
            ["arr_3", "arr_4", "arr_5", "arr_6"]
        ],
        ...
    });

触发条件:尝试删除这个数组中的元素:
configVm.arr.removeAt(0);

报错:就会报这个错误:

clipboard.png


2. 源代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="http://cdn.bootcss.com/avalon.js/2.1.6/avalon.js"></script>
    <style>
        .horizontal_div {
            display: inline-block;
            width: 30%;
            vertical-align: top;
        }

        .horizontal_div {
            border-bottom: solid 1px black;
        }

        .item {
            height: 40px;
            line-height: 40px;
            text-align: center;
            border: solid 1px black;
            border-bottom: none;
        }

        .no-border-right {
            border-right: none;
        }
    </style>
</head>
<body>
<div :controller="test">
    <div style="width:100%;" id="container">
        <div class="horizontal_div">
            <!--ms-for: (idx,childArr) in @array-->
            <div class="item" :for="item in childArr">
                {{item}}
            </div>
            <div class="item">分割</div>
            <!--ms-for-end:-->
        </div>
    </div>
    <button onclick="deleteArrayItem(0)">删除数组中第一个元素</button>
</div>
<script>
    var configVm = avalon.define({
        $id: "test",
        array: [
            ["arr_item_1", "arr_item_2"],
            ["arr_item_3", "arr_item_4", "arr_item_5", "arr_item_6"]
        ]
    });
    function deleteArrayItem(idx) {
        configVm.array.removeAt(idx);
        configVm.array.removeAt(idx);
    }
</script>

</body>
</html>

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

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

发布评论

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

评论(1

紫瑟鸿黎 2022-09-10 19:20:57

将外面的注释循环改成一个DIV,用属性ms-for循环

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