2015-10-13 54 views
1

我正在添加刪除(銷燬)對象功能到我的web應用程序。 當我銷燬對象,然後重新呈現時,我的表仍然顯示被銷燬的行。當我再次刪除它無法刪除。我看起來像我的重新渲染太快了破壞功能。如何在銷燬完成後重新渲染?parse.com刪除太慢重新渲染

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 
} 

回答

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'); 
+0

謝謝,這對第一次刪除很有用。之後,它失敗了,我得到兩個「刪除失敗!」警報。下次我得到三個「刪除失敗!」警報。 –

+0

似乎變量正在保存數據並嘗試刪除已刪除的對象。也許 。你怎麼看? –

+0

我認爲這可能是問題在我的代碼中。這裏我在上面的代碼之前編碼。 'code'function ClickedRowButton(){ $(document).on('click','.btnDeleteLine',function(){ var row = $(this).parents('tr')。attr('id' ); // var rowtext = $(this).closest('tr')。text(); // alert(row); fncBuildEditData(row); });爲什麼不使用$('。btnDeleteLine')。click(function(){});}'code' –