2013-12-10 61 views
5

剛開始劍道UI設置實驗,我堅持了一個如何使用標準的JavaScript對象作爲數據源使用。劍道UI數據源開始使用JavaScript對象

這是很容易從最初的JavaScript對象加載數據,但我希望能夠找回數據都通過用戶交互發生變化之後。

優選地,如果該對象以某種方式與微件同步,因此所有人們必須做的是讀/寫此javascript對象。

我們的數據:

var _data = [ 
{ 
    eventID: 8, 
    title: "Group meeting.", 
    start: new Date("2013/06/13 07:00"), 
    end: new Date("2013/06/13 08:30"), 
    pending:false, 
    recurrenceRule: "", 
    recurrenceException: "", 
    description: "Take my brother to his group meeting.", 
    isAllDay:false, 
    ownTimeSlot:true, 
    careAssistantId: 5, 
    clientId: 6 
},{ 
    eventID: 9, 
    title: "Make dinner.", 
    start: new Date("2013/06/13 11:00"), 
    end: new Date("2013/06/13 13:30"), 
    pending:true, 
    recurrenceRule: "", 
    recurrenceException: "", 
    description: "Make dinner for my mom.", 
    isAllDay:false, 
    ownTimeSlot:true, 
    careAssistantId: 5, 
    clientId: 6 
} ]; 

初始化窗口小部件:

function save(){ 
    console.log(_data);  
} 

$('.schedule').kendoScheduler({ 
     date: new Date("2013/6/13"), 
     startTime: new Date("2013/6/13 07:00 AM"), 
     height: 600, 
     views: [ { type: "week", selected: true }], 
     save: save, 
     dataSource:_data 
}); 

下面是代碼的設置進行測試(注意保存的console.log調試):

http://jsfiddle.net/t23Ce/11/

人們應該如何在Kendo UI世界中讀取/寫入'狀態'?

回答

9

一個簡單的數組不能提供更改跟蹤,所以它在創建小部件時轉換爲DataSource。您可以訪問您的數據的當前狀態,以不同的方式:

  1. 得到一個數組遍歷all datadataSource.data()
  2. 訪問specific itemdataSource.at(1)
  3. 得到filtered datadatasource.view()
  4. 得到pure JS array回:dataSource.data().toJSON()
+0

「dataSource.data()。toJSON()」完美地工作。我看到的唯一問題是當我刪除並得到'刪除'事件時,我仍然在dataSource中看到該事件... – zaf

+0

@zaf我不明白這個問題 - 你能更新你的小提琴來說明它嗎? –

+0

http://jsfiddle.net/NZ4EM/9/我發現它可能會刪除函數調用後的事件,因爲如果刪除這兩個函數,您會注意到調試減少了一個。 – zaf

2

儘管你從初始化JavaScript數組(_data)的dataSource,KendoUI內部創建一個數據源(在你的情況下,SchedulerDataSource),只有使用您的陣列加載初始內容。

如果你需要/想用數組,以保持和體現在它的變化,你可能需要編寫一些代碼進行更新。

如果你能定義爲ShedulerDataSource_data生活,那麼你可以嘗試將其定義爲:

var _data = new kendo.data.SchedulerDataSource({ 
    data: [ { 
     eventID: 8, 
     title: "Group meeting.", 
     start: new Date("2013/06/13 07:00"), 
     end: new Date("2013/06/13 08:30"), 
     pending:false, 
     recurrenceRule: "", 
     recurrenceException: "", 
     description: "Take my brother to his group meeting.", 
     isAllDay:false, 
     ownTimeSlot:true, 
     careAssistantId: 5, 
     clientId: 6 
    },{ 
     eventID: 9, 
     title: "Make dinner.", 
     start: new Date("2013/06/13 11:00"), 
     end: new Date("2013/06/13 13:30"), 
     pending:true, 
     recurrenceRule: "", 
     recurrenceException: "", 
     description: "Make dinner for my mom.", 
     isAllDay:false, 
     ownTimeSlot:true, 
     careAssistantId: 5, 
     clientId: 6 
    } ], 
    schema: { 
     model : { 
      id : "eventID" 
     } 
    } 
}); 

看看它是運行在這裏:http://jsfiddle.net/OnaBai/t23Ce/14/

+0

感謝您的。我發現_data對象得到更新,我可以遍歷該對象中的_data對象,然後對json進行編碼和解碼,最終得到類似於原始輸入數據結構的東西。這可能是我,但肯定看起來像跳過幾圈來獲取數據。必須有一些魔術方法某處... – zaf

+0

@zaf - 如果你需要獲取數據的「純粹」的JavaScript陣列中的數據源,你可以做到這一點 - 我更新了我的答案 –

+1

@zaf,獲取數據,如JavaScript - 對於讀取來說,與「_data.data()」一樣簡單,但不應該更新此數組,因爲更改不會反映在UI中。 – OnaBai