在 DataSource
组件的 Kendo UI 文档中,它指出 data
函数用于获取数据源的数据项。
但是,它还指出,如果数据源绑定(bind)到 JavaScript 数组(通过 data 选项),则 data
方法将返回该数组的项目。数组中的每个项目都包装在 kendo.data.ObservableObject
或 kendo.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/