зона.js: 140 Uncaught TypeError: не удается прочитать свойство "удалить"
- Я новичок в Kendo ui.
- Я разработал прототип в моей скрипкой. окно подтверждения удаления работает нормально.
- но когда я интегрируюсь в свою кодовую базу, я получаю ошибку, не могу прочитать свойство "удалить" в строке pai_to_delete.удалить();
- Ребята, подскажите, как это исправить.
- предоставление моего кода ниже.
обновлено
-может быть, я не правильно объяснить...как мой ui выглядит, когда я нажимаю ссылку, открывается большое всплывающее окно с сеткой...в этой сетке, когда я нажимаю столбец откроется небольшое всплывающее окно с опцией delete...когда я нажимаю кнопку Удалить, открывается окно подтверждения... - когда я использую родной метод подтверждения js, он работает нормально..Я думаю, что на этот раз все правильно... - но когда я использую всплывающее окно Kendo ui, оно не работает нормально... - мой pai_to_delete не ссылается должным образом, когда я использую Kendo ui...поскольку это относится к этому div, а не к родительскому div, я думаю так.
прототип скрипка
- весь код я не могу вставить в свой вопрос, поэтому я вставляю в скрипку, соответствующий код, который я вставляю ниже
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();
});
работает с родным методом подтверждения js
$(".тигр.)"bind ("click", функция (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 ответов
ключевое различие между собственным методом подтверждения и пользовательским модальным окном-собственный метод подтверждения является синхронным.
когда метод синхронен, и вы нажимаете Ok / Cancel в диалоговом окне native confirm,$(".pai-del-menu").blur
даже происходит, но выполняется только после $(".pai-del-menu").click
было закончено, поэтому все работает нормально.
когда метод асинхронен и вы нажимаете Ok / Cancel в модальном окне,$(".pai-del-menu").blur
даже происходит и выполняется немедленно, удаляя pai_to_delete
ссылка, так что внутри $(".pai-del-menu").click
событие pai_to_delete
уже null
.
все, что вам нужно, это назначить pai_to_delete
к другой переменной прямо перед kendoWindow
создание и использование его внутри $(".pai-del-menu").click
событие:
$(".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();
});
}
});