2016-05-24 13 views
2

Ich habe ein seltsames Problem und ich habe versucht, es in den letzten paar Stunden zu beheben und habe nach Antworten gesucht, aber das einzige, was ich Finden ist das Gegenteil. Ich habe ein Kendo-Fenster, das sich beim ersten Klick auf das erste Mal schließt, aber wenn ich das Fenster wieder öffne, wird es nicht geschlossen. Überall wo ich hingesehen habe, haben die Leute das gegenteilige Problem. Hier ist mein Code für das Fenster istKendoWindow kann schließen, wenn es geöffnet wurde, aber nicht, wenn es ein zweites Mal geöffnet wird

function CustomerPopupEditor() { 
    $("#showCustomerEdit").append("<div id='window'></div>"); 
    var myWindow = $("#window").kendoWindow({ 
     width: "80%", 
     height: "47%", 
     title: "Customer", 
     content: "/Customer/CustomerEditor", 
     modal: true, 
     actions: [ 
      "Close" 
     ], 
     close: function (e) { 
      $("#window").empty(); 
     } 
    }).data("kendoWindow"); 
    myWindow.center().open(); 
} 

hier ist meine Kendo-Symbolleiste, die das Fenster

template: "<button type='button' onClick='CustomerPopupEditor()' class='btn btn-warning'><span class='glyphicon glyphicon-edit'></span> Edit</button> &nbsp" 

und hier ist mein Code, dass ich das Fenster zu schließen verwenden öffnet, wenn ich speichern klicken

Also für das Leben von mir verstehe ich nicht, warum ich es zum ersten Mal öffnen kann, wenn es geöffnet wird und nicht das zweite Mal, dass es geöffnet wird.

+0

Ich habe versucht, das Problem zu reproduzieren, aber es sieht, dass ich bin etwas fehlt. Bitte überprüfen Sie diese [Demo] (http://dojo.telerik.com/AcOqU), wenn es möglich ist, zu reproduzieren? – Ademar

+0

Wie verwenden Sie die 'CloseTheWindow()' Funktion? –

Antwort

1

Sie sollten $("#window").data("kendoWindow").destroy(); statt $("#window").empty(); verwenden Auf diese Weise wird Kendo Widget zerstört. Ansonsten reinige nur das html-Element.

Siehe wie Destroy Widgets

+0

Das hat den Trick gemacht und danke für das Hinzufügen eines Links zum Zerstören von widjets. – Chris

+0

nur Punkte sammeln und anderen helfen;) –

1

Trotz des Namens, die close Funktion verstecken tatsächlich das Fenster, aber es wird als DOM-Element bleiben. Wenn Sie also das Fenster ein zweites Mal erstellen, fügt Ihr Code ein zweites "#window Element im DOM hinzu und initialisiert auch das erste #window als KendoWindow, während es bereits ein Kendo-Fenster ist.

Also im Grunde, was Sie tun müssen, ist die Zerstörung Funktion anstelle von der Nähe zu nennen:

function CloseTheWindow() { 
    $("#window").data("kendoWindow").destroy(); 
} 
+0

Große Erklärung – Chris