2015-09-30 83 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