javascript - 从kendo UI DataSource获取原始数据

标签 javascript jquery kendo-ui kendo-treeview

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

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

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

我问这个问题是因为我正在使用 Kendo UI Treeview 控件,并且在其事件处理程序(例如检查事件)中,我想根据某些自定义逻辑更新树节点的原始数据项。

更新

例如,这是一个具有单个节点的简单 Treeview (当然,在现实场景中,树将包含许多节点)。检查节点时,我想获取对所检查节点的原始数据项的引用。 this.dataItem(e.node) 不会返回原始数据项,因为日志语句输出 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>

最佳答案

如果我正确理解您的问题,您可以通过引用您的数据源并使用 .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();

关于javascript - 从kendo UI DataSource获取原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874669/

相关文章:

javascript - 使用 Javascript 进行光栅化在 Apache 服务器上看起来有所不同

javascript - 如果选中的复选框超过 3 个,如何取消选中该复选框

javascript - Fabricjs 将 Canvas 的一部分复制到另一个 Canvas

widget - 如何扩展Kendo UI小部件

c# - Kendo UI 输入焦点 - 选择和 Ajax 调用后,DropdownList 保留焦点

jquery - Kendo Multiselect如何在各处设置只读属性?

javascript - InvalidStateError : An attempt was made to use an object that is not, 或不再可用

javascript - jQuery PreventDefault() 如何删除同一点击事件中的内容

javascript - 在 webpack 中导入 jQuery 插件

javascript - CSS:不同类之间的过渡