Javascript 从kendo UI数据源获取原始数据

Javascript 从kendo UI数据源获取原始数据,javascript,jquery,kendo-ui,kendo-treeview,Javascript,Jquery,Kendo Ui,Kendo Treeview,在数据源组件的Kendo UI文档中,它声明数据函数用于获取数据源的数据项 但是,它还指出,如果数据源绑定到JavaScript数组(通过data选项),则data方法将返回该数组的项。数组中的每个项都包装在一个kendo.data.observeyObject或kendo.data.Model中 如何检索传递到数据源的原始未包装数据项(即具有相同的引用) 我之所以这样做是因为我正在使用Kendo UI treeview控件,并且在它的事件处理程序(例如check event)中,我希望根据一些

数据源
组件的Kendo UI文档中,它声明
数据
函数用于获取数据源的数据项

但是,它还指出,如果数据源绑定到JavaScript数组(通过data选项),则
data
方法将返回该数组的项。数组中的每个项都包装在一个
kendo.data.observeyObject
kendo.data.Model

如何检索传递到数据源的原始未包装数据项(即具有相同的引用)

我之所以这样做是因为我正在使用Kendo UI treeview控件,并且在它的事件处理程序(例如check event)中,我希望根据一些自定义逻辑更新树节点的原始数据项

更新

例如,这里有一个简单的树视图,它只有一个节点(当然,在现实场景中,树将包含许多节点)。在检查节点时,我希望获得对已检查节点的原始数据项的引用
this.dataItem(e.node)
不会返回原始数据项,因为log语句输出false

<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>

var mydata=[
{文本:“foo”,选中:false}
];
$(“#treeview”).kendoTreeView({
复选框:正确,
数据源:mydata,
检查:功能(e){
console.log(this.dataItem(e.node)=mydata[0]);//我希望输出true
}
});

如果我正确理解了您的问题,您可以通过引用您的数据源并使用
.at(x)
函数独立获取记录,其中
x
等于您试图访问的数据源的任何记录。所以,我想第一个

var theData = yourDataSource.at(0);
要更新它,请使用
.set
.sync

theData.set('userFirstName', 'Joe');
theData.set('userAverageTime', 10);
yourDataSource.sync();
使用
.set()
很方便,因为如果您将所有更新存储到一个iterable集合中,那么您就可以运行它们

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

如果我正确理解了您的问题,您可以通过引用您的数据源并使用
.at(x)
函数独立访问记录,其中
x
等于您试图访问的数据源的任何记录。所以,我想第一个

var theData = yourDataSource.at(0);
要更新它,请使用
.set
.sync

theData.set('userFirstName', 'Joe');
theData.set('userAverageTime', 10);
yourDataSource.sync();
使用
.set()
很方便,因为如果您将所有更新存储到一个iterable集合中,那么您就可以运行它们

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

谢谢你的回复。不幸的是,at()调用不返回原始数据项,而是返回封装在ObservableObject中的数据项。我希望它返回原始数据项,这样我就可以潜在地更新它,而不必在传递到数据源的数组中查找该项。我已经更新了我的问题来澄清这个问题。谢谢你的回答。不幸的是,at()调用不返回原始数据项,而是返回封装在ObservableObject中的数据项。我希望它返回原始数据项,这样我就可以潜在地更新它,而不必在传递到数据源的数组中查找该项。我更新了我的问题以澄清这个问题。