从kendo UI DataSource获取原始数据

时间:2015-09-30 20:05:10

标签: javascript jquery kendo-ui kendo-treeview

DataSource组件的Kendo UI文档中,它指出data函数用于获取数据源的数据项。

但是它还声明如果数据源绑定到JavaScript数组(通过数据选项),data方法将返回该数组的项目。数组中的每个项目都包含在kendo.data.ObservableObjectkendo.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>

1 个答案:

答案 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();