首页 > 解决方案 > 选择选项加载后消失

问题描述

我正在尝试在主视图内使用不同的模型实例动态加载部分视图。一切正常,直到我不得不重新加载部分视图内容。然后我必须重新加载 1 个选择列表选项,这不在模型中。我有 js 方法。问题是,有时会添加选项,然后立即消失。我究竟做错了什么?没有任何方法可以改变这个选择控件。

主视图:

<div id="tableContainer">
    @{Html.RenderPartial("_TableView", Model.Tables[0]);}
</div>


<script type="text/javascript">

    function loadTable () {
        var selectedElement = $("#tableSelect").children("option:selected").val();
        $("#tableContainer").load("/Home/UpdateTable/" + selectedElement);
        getDishes();
    };

    window.onload = function () {
        getDishes();
    };

</script>

getDishes 函数:

function getDishes() {
        $.ajax({
            type: "GET",
            url: "/GetDishes",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: "",
            success: function (result) {
                if (result.success) {
                    fillDishList(result.message);
                }
                else
                    alert("Błąd podczas pobierania dostępnych dań! Treść błędu: " + result.message);
            }
        })
    }

和 fillDishList 函数:

function fillDishList(list) {
        for (var a = 0; a < list.length; a++) {
            var element = { val: a, text: list[a].Name };
            $("#dishes").append($("<option>").attr('value', element.val).text(element.text));
        }

        updateDishPrice();
    }

编辑 好的,我让它工作了。有时间问题。应在部分视图完全加载之前启动应将元素附加到选择列表的功能。这是解决方案:

<script type="text/javascript">

    function loadTable () {
        var selectedElement = $("#tableSelect").children("option:selected").val();
        $("#tableContainer").html("");
        $("#tableContainer").load("/Home/UpdateTable/" + selectedElement);
        window.requestAnimationFrame(ready);
    };

    var ready = function () {
        var dishes = $("#dishes");
        if (dishes) {
            getDishes();
            if (dishes.children().length != 0)
                return;
        };

        window.requestAnimationFrame(ready);
    };

    window.onload = function () {
        getDishes();
    };

</script>

标签: javascriptc#asp.netmodel-view-controller

解决方案


推荐阅读