2013-01-24 69 views
11

我有一個kendo窗口,裏面有一個窗體。該表單具有填充其中的記錄數據的輸入元素。用戶可以關閉窗口並選擇一個不同的記錄進行查看。當用戶這樣做時,我需要再次以相同的形式顯示kendo窗口,但是具有不同的記錄數據。這就是我目前做將新內容加載到kendo窗口的正確方法是什麼?

if (!$("#winContainer").data("kendoWindow")) { 
     $("#winContainer").kendoWindow({ 
      modal: true, 
      width: "969px", 
      height: "646px", 
      title: "View Record", 
      content: "record.jsp" 
     }); 
    } else { 
     $("#winContainer").data("kendoWindow").refresh({url: 'record.jsp'}); 
    } 

    $("#winContainer").data("kendoWindow").center().open(); 

的形式被包含record.jsp內,和我一起,我以前從服務器接收(通過JavaScript在record.jsp引用)JSON數據填充它。我需要確保窗口不顯示,直到新的記錄數據填充到表單中。這是做這件事的正確方法還是有更好的方法?

回答

21

不是每次都創建一個新的窗口或刷新它的內容,我建議:

  1. 創建一個窗口,
  2. 每一個用戶選擇了一個新的記錄,新的數據綁定到窗口然後打開它。

這樣你只需要加載一次頁面。

您可能還會考慮將頁面record.jsp定義爲原始頁面中的Kendo UI模板。

例子:

考慮以下用戶可選擇的記錄:

var data = [ 
    { text1: "text1.1", text2: "text1.2" }, 
    { text1: "text2.1", text2: "text2.2" }, 
    { text1: "text3.1", text2: "text3.2" }, 
    { text1: "text4.1", text2: "text4.2" } 
]; 

並將其定義爲下面的HTML模板的形式:

<script id="record-jsp" type="text/x-kendo-template"> 
    <div> 
     <p>This is your form with some sample data</p> 
     <label>text1: <input type="text" data-bind="value: text1"></label> 
     <label>text2: <input type="text" data-bind="value: text2"></label> 
    </div> 
</script> 

我們的JavaScript將是什麼如:

// Window initialization 
var kendoWindow = $("<div id='window'/>").kendoWindow({ 
    title : "Record", 
    resizable: false, 
    modal : true, 
    viewable : false, 
    content : { 
     template: $("#record-jsp").html() 
    } 
}).data("kendoWindow"); 

數據綁定到窗口打開它:

function openForm(record) { 
    kendo.bind(kendoWindow.element, record); 
    kendoWindow.open().center(); 
} 

最後調用與數據的功能。

openForm(data[0]); 

你可以看到它運行在這個JSFiddle

注:如果你還是喜歡使用外部的頁面,只需要通過改變template: $("#record-jsp").html()url: "record.jsp"

+0

感謝您對我的這種方法。它在綁定複雜對象時起作用。使用這種方法需要對我的應用程序進行相當數量的更改,但這絕對是值得的。我不得不很快發佈應用程序,所以它必須是下一個階段的變化。再次感謝。 – James

+2

因此,對於此版本,如果您更願意準備record.jsp中的最終頁面內容,則可以始終添加某種參數,以便servlet決定要呈現的內容。我的意思是,像'record.jsp?arg1 = xyz&arg2 = yzx&arg3 = zxy'。 – OnaBai

+0

感謝您給我短期內的另一種選擇和快速響應。我對原來的方法做了一些更多的工作,並認爲最初的發佈版本可以。但是你的方法肯定更好,我會在下一個版本中獲得。我只希望我(問)在我的開發早期就知道你的方法。 – James

相關問題