2015-09-30 111 views
1

在爲DataSource組件劍道UI文檔的原始數據,它指出data函數用於獲取數據源數據項。充分利用劍道UI數據源

但它也表明,如果數據源綁定到JavaScript數組(通過數據選項),data方法將返回該數組的項目。陣列中的每件商品都包裝在kendo.data.ObservableObjectkendo.data.Model中。

我怎樣才能檢索原始展開的數據項(即,具有相同的附圖),其被傳遞到數據源?

我問,因爲我使用的是劍道UI TreeView控件和其事件處理程序(例如檢查事件),我想基於一些自定義邏輯樹節點更新原始數據項。

更新

例如這裏是具有(現實情景中的當然之樹將包含許多節點)的單個節點的樹狀簡單。檢查節點時,我想獲取對檢查節點的原始數據項的引用。由於日誌語句輸出false,因此this.dataItem(e.node)不會返回原始數據項。

<div id="treeview"></div> 
<script> 
    var mydata = [ 
    { text: "foo", checked: false} 
    ]; 
$("#treeview").kendoTreeView({ 
    checkboxes: true, 
    dataSource: mydata, 
    check: function(e) {  
    console.log(this.dataItem(e.node) == mydata[0]); //I want this to output true 
    } 
}); 
</script> 

回答

0

如果我正確理解你的問題,你可以獨立通過引用您的數據源,並使用.at(x)函數,其中x等於您嘗試訪問您的數據源的任何記錄到的記錄。所以得到第一個。

var theData = yourDataSource.at(0); 

更新它,您再使用.set.sync

theData.set('userFirstName', 'Joe'); 
theData.set('userAverageTime', 10); 
yourDataSource.sync(); 

使用.set()是很方便的,因爲如果你所有的更新存儲到一個可迭代的收集,那麼你可以通過它們運行。

$.each(updatedVars, function(key, element) { 
    theData.set(key, element); 
}); 
yourDataSource.sync(); 
+0

謝謝您的答覆。不幸的是,at()調用不會返回原始數據項,它會返回一個包含在ObservableObject中的數據項。我希望它返回原始數據項,以便我可以更新它,而無需查找數組中的項被傳入數據源。我已更新我的問題以澄清問題。 – aw1975