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中的数据项。我希望它返回原始数据项,这样我就可以潜在地更新它,而不必在传递到数据源的数组中查找该项。我更新了我的问题以澄清这个问题。