2017-07-23 45 views
7
  • Jestem nowy w kendo ui.
  • Opracowałem prototyp w moim skrzypcach. okno potwierdzenia usunięcia działa dobrze.
  • ale po integracji z moją bazą kodową otrzymuję błąd Nie można odczytać właściwości 'remove' w linii pai_to_delete.remove();
  • możecie mi powiedzieć, jak to naprawić.
  • podając mój kod poniżej.

aktualizowanezone.js: 140 Uncaught TypeError: Nie można odczytać właściwości "usuń"

-Można się nie wyjaśni Ci prawidłowo ... jak wygląda moja ui jest po kliknięciu łącza duże okienko otwiera siatki ... w tej siatce kiedy kliknij kolumnę małe wyskakujące okienko z opcją usuwania otwiera ... kiedy klikam opcję usuwania otwiera się okno potwierdzenia ... - kiedy używam natywnej metody potwierdzenia js działa dobrze ... Myślę, że czas to poprawnie odnieść. .. - ale kiedy używam kendo ui popup to nie działa dobrze ... - to moje pai_to_delete nie odnoszące się poprawnie, gdy używam kendo ui ... ponieważ odnosi się do tego div ot rodziców div tak sądzę.

prototyp skrzypce

http://jsfiddle.net/amu6tw2a/

  • cały kod nie jestem w stanie wkleić w moje pytanie, więc jestem wklejając w skrzypcach, odpowiedni kod jestem wklejając poniżej

https://jsfiddle.net/44tLx225/

zone.js: 140 Uncaught TypeError: Cannot read property 'remove' 
of null 
at HTMLButtonElement.eval(swimming - jumpings.ts: 990) 
at HTMLDocument.dispatch(jquery - 2.2.3. js: 4737) 
at HTMLDocument.elemData.handle(jquery - 2.2.3. js: 4549) 
at ZoneDelegate.invokeTask(zone.js: 236) 
at Zone.runTask(zone.js: 136) 
at HTMLDocument.ZoneTask.invoke(zone.js: 304) 


$(".tiger").bind("click", function(e) { 

    let that = this; 





    $(".pai-del-menu").blur(function() { 
    $(this).hide(); 
    pai_to_delete = null; 
    }); 

    $(".pai-del-menu").click(function() { 
    $(this).hide(); 
    //let popup = $("#deletePopup").data("kendoWindow").center().open(); 
    if (pai_to_delete != null) { 
     //$('.addELFDocumentForm').show(); 
     //alert("Are you sure you want to delete the selected jumping"); 

     var kendoWindow = $("<div />").kendoWindow({ 
     title: "Confirm", 
     resizable: false, 
     modal: true, 
     height: 100, 
     width: 400 
     }); 

     kendoWindow.data("kendoWindow") 
     .content($("#delete-confirmation").html()) 
     .center().open(); 

     $(jumping).on("click", "#playerDocumentOk", function() { 
     pai_to_delete.remove(); 
     kendoWindow.data("kendoWindow").close(); 
     }) 


     $(jumping).on("click", "#playerDocumentCancel", function() { 
     kendoWindow.data("kendoWindow").close(); 
     }) 

     //pai_to_delete.remove(); 
    } 

    }); 


    var record_x = e.pageX; 
    var record_y = e.pageY - $(".navHeaderBox").height() - $(".breadCrumbBox").height() - 20; 

    $(".pai-del-menu").css({ 
    left: record_x, 
    top: record_y 
    }); 

    $(".pai-del-menu").fadeIn(200); 

    $(".pai-del-menu").show(); 
    $(".pai-del-menu").attr('tabindex', -1).focus(); 
    pai_to_delete = $(this).parent().parent(); 

}); 

prace z JS rodzimej metody potwierdzają

$ ("Tygrys "). Powiązać (" click", function (e) {

 $(".pai-del-menu").blur(function() { 
     $(this).hide(); 
     pai_to_delete = null; 
     }); 

     $(".pai-del-menu").click(function() { 
     $(this).hide(); 
     if (pai_to_delete !== null) { 
      //alert("Are you sure you want to delete the selected document"); 
      //confirm("Are you sure you want to delete the selected document"); 

      var r = confirm("Are you sure you want to delete the selected document"); 
      if (r == true) { 
       //txt = "You pressed OK!"; 
       pai_to_delete.remove(); 
      } else { 
       //txt = "You pressed Cancel!"; 
      } 
      //pai_to_delete.remove(); 
     } 

     }); 


     var pai_x = e.pageX; 
     var pai_y = e.pageY - $(".navHeaderBox").height() - $(".breadCrumbBox").height() - 20; 

     $(".pai-del-menu").css({ 
     left: pai_x, 
     top: pai_y 
     }); 

     $(".pai-del-menu").fadeIn(200); 

     $(".pai-del-menu").show(); 
     $(".pai-del-menu").attr('tabindex', -1).focus(); 
     pai_to_delete = $(this).parent().parent(); 

    }); 
+1

wklejeniu kodu dla swojego urządzenia w Fiddle ale nie masz żadnego HTML. Przygotuj działające demo, abyśmy mieli z czym pracować. – Shai

+1

@shai moja baza kodu jest bardzo duża, nie można przynieść skrzypiec ... to jest powód, dla którego opublikowałem cały plik w skrzypcach –

+1

Nie wszystko, tylko podstawowa infrastruktura do załadowania komponentu. Czy może opiera się na wielu innych komponentach? – Shai

Odpowiedz

1

Kluczową różnicą między natywnym sposobem potwierdzenia i obyczaju okno modalne - natywna metoda potwierdzania jest synchroniczna.

Gdy metoda jest synchroniczna i klikniesz Ok/Anuluj w natywnym oknie dialogowym potwierdzenia, $(".pai-del-menu").blur nawet występuje, ale wykonuje się dopiero po zakończeniu $(".pai-del-menu").click, więc wszystko działa poprawnie.

Kiedy metoda jest asynchroniczne i kliknie OK/Cancel na modalnego okna $(".pai-del-menu").blur jeszcze występuje i uruchamia natychmiast, usuwając pai_to_delete odniesienia, tak wewnątrz $(".pai-del-menu").click wydarzenie pai_to_delete jest już null.

Wszystko czego potrzebujesz to przypisać pai_to_delete do innej zmiennej prawo przed kendoWindow tworzenia i używać go wewnątrz $(".pai-del-menu").click imprezy:

$(".pai-del-menu").blur(function() { 
    $(this).hide(); 
    pai_to_delete = null; 
}); 

$(".pai-del-menu").click(function() { 
    $(this).hide(); 
    if (pai_to_delete != null) { 
    var paiToDelete = pai_to_delete; // <---- 
    var kendoWindow = $("<div />").kendoWindow({ 
     title: "Confirm", 
     resizable: false, 
     modal: true, 
     height: 100, 
     width: 400 
    }); 

    kendoWindow.data("kendoWindow") 
     .content($("#delete-confirmation").html()) 
     .center().open(); 

    $(jumping).on("click", "#playerDocumentOk", function() { 
     paiToDelete.remove(); // <---- 
     kendoWindow.data("kendoWindow").close(); 
    }); 

    $(jumping).on("click", "#playerDocumentCancel", function() { 
     kendoWindow.data("kendoWindow").close(); 
    }); 
    } 
}); 
+0

dziękuję za odpowiedź ... tak mylące ... czy możesz aktualizować w moim kodzie ... próbowałem wszystkich ... bardzo zagmatwanych –

+0

Zaktualizowałem odpowiedź z przykładowym kodem –

+0

@Aleksander: dodałeś tę linię ?? var paiToDelete = pai_to_delete; –