在DataSource
组件的Kendo UI文档中,它指出data
函数用于获取数据源的数据项。
但是它还声明如果数据源绑定到JavaScript数组(通过数据选项),data
方法将返回该数组的项目。数组中的每个项目都包含在kendo.data.ObservableObject
或kendo.data.Model
。
如何检索传递到数据源的原始未包装数据项(即具有相同的引用)?
我问,因为我正在使用Kendo UI树视图控件并在其事件处理程序中(例如检查事件)我想基于某些自定义逻辑更新树节点的原始数据项。
更新
例如,这里是一个具有单个节点的简单树视图(当然,在实际情况下,树将包含许多节点)。检查节点时,我想获取对已检查节点的原始数据项的引用。 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>
答案 0 :(得分: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();