gpt4 book ai didi

javascript - 在 transport.read 函数中访问 dataItem

转载 作者:行者123 更新时间:2023-11-30 12:47:32 24 4
gpt4 key购买 nike

这个问题是this post的镜像在我昨天发布的 Telerik 论坛上。

我有一个带有 HierarchicalDataSource 的 TreeView,我的问题很简单:我可以在 transport.read 函数中访问当前数据项吗?

例如,考虑这段代码:

new kendo.data.HierarchicalDataSource({
transport: {
read: function(options) {
// Here i'll prepare my url to be called
return "my/controller/" + dataItem.Id;
}
}
});

我想在读取函数中访问当前扩展节点的 dataItem 属性。这可能吗?

我尝试了很多方法,但该函数内部的作用域使我无法访问它之外的任何内容。

更新:

@OnaBai 建议与 - 在我的例子中 - Value 属性一起工作,给定以下模型:

{
id: "Value",
hasChildren: "HasChildren"
};

但我希望能够访问的不仅仅是Id,还有整个dataItem。我尝试将 dataItem 或请求的属性添加到模型中,但没有成功:

{
id: "Value",
hasChildren: "HasChildren",
fields: {
ParentId: { type: "string" }
}
};

ParentId 来自resquest 及其在dataItem 中的可访问性,但不是在read 函数内的options 中。还有另一种方法吗?

更新 2:

通过将模型的 id 设置为 uid 可以实现一个巧妙的方法:

{
id: "uid"
}

该函数将接收 uid,然后您可以从 dataSource 获取它,例如dataSource.getByUid().

最佳答案

假设 Id 是模型中定义的 id,您应该:

new kendo.data.HierarchicalDataSource({
transport: {
read: function(options) {
return "my/controller/" + options.Id;
}
}
});

请在此处查看示例:http://jsfiddle.net/OnaBai/mE4zZ/2/

编辑:如果您需要访问完整模型然后知道id,您可以在DataSource 上使用get 方法来获取项目.

例子:

var ds = new kendo.data.HierarchicalDataSource({
transport: {
read: function(options) {
if (options.Id) {
var item = ds.get(options.Id);
// Do whatever else you need with Item
}
return "my/controller/" + options.Id;
}
}
});

在此处修改 JSFiddle http://jsfiddle.net/OnaBai/mE4zZ/3/

关于javascript - 在 transport.read 函数中访问 dataItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22017271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com