parse.com删除太慢,无法重新渲染

时间:2015-10-13 21:03:57

标签: javascript parse-platform delete-row

我正在向我的网络应用添加删除(破坏)对象功能。 当我销毁对象然后重新渲染时,我的表仍然显示被破坏的线。当我再次删除它无法删除。我看起来我的重新渲染对于destroy函数来说太快了。在销毁完成后如何重新渲染?

function fncBuildEditData(i) {
    var EditData = Parse.Object.extend("WorkOrders");
    var query = new Parse.Query(EditData);
    query.get(i, {
            success: function(myObj) {
                myObj.destroy({});
            },
            error: function(object, error) {
             alert("DELETION FAILED!");
        }
    });
    fncBuildWOTable();//rebuild table
}

1 个答案:

答案 0 :(得分:2)

您的query.get会在运行success函数之前立即返回,同样myObj.destroy也将在运行success函数之前返回。您应该在内部函数中执行重新加载,如下所示:

function fncBuildEditData(i) {
    var EditData = Parse.Object.extend("WorkOrders");
    var query = new Parse.Query(EditData);
    query.get(i, {
            success: function(myObj) {
                myObj.destroy(
                {
                    success: function(x) { 
                        fncBuildWOTable();//rebuild table
                    },
                    error: function(x, error) {
                        alert("DELETION FAILED!");
                    }
                });
            },
            error: function(object, error) {
                alert("GET FAILED!");
            }
    });    
}

您还提到过使用以下代码绑定函数:

function ClickedRowButton() { 
    $(document).on('click', '.btnDeleteLine', function() {
        var row = $(this).parents('tr').attr('id'); 
        //var rowtext = $(this).closest('tr').text(); 
        //alert(row); 
        fncBuildEditData(row); 
    }); 
}

我相信你实际上只是想找到最接近的元素,而不是元素的集合,所以请改用它:

var row = $(this).closest('tr').attr('id');