Access DataItem内のtransport.read関数にアクセスします
-
21-12-2019 - |
質問
この質問は、この記事昨日掲示したテレリックのフォーラムで。
私は階層的なDataSourceを備えたツリービューを持っています、そして私の質問は簡単です:transport.read関数の現在のdataItemにアクセスできますか?
例えば、このコードを検討してください。
new kendo.data.HierarchicalDataSource({
transport: {
read: function(options) {
// Here i'll prepare my url to be called
return "my/controller/" + dataItem.Id;
}
}
});
.
READ関数内の現在の展開ノードのDataItemのプロパティにアクセスしたい。これは可能ですか?
多くの方法を試してみましたが、その機能内の範囲は私にその外で何もしないことを与えます。
更新:
@onabaiの提案は、次のモデルを考えると、Value
プロパティで働いた。
{
id: "Value",
hasChildren: "HasChildren"
};
.
しかし、私はId
だけでdataItem
の全体にアクセスできるようになりたいです。モデルにDataItemのプロパティを追加しようとしましたが、それはうまくいかない:
{
id: "Value",
hasChildren: "HasChildren",
fields: {
ParentId: { type: "string" }
}
};
.
ParentId
は、resquestとそれがdataItem
でのアクセシブルからのものですが、options
関数内のread
では使用されません。それをするもう一つの方法がありますか?
更新2 :
これを行うことのためのトリッキーな方法は、モデルのIDをuid
に設定することによって達成することができます:
{
id: "uid"
}
.
関数はUIDを受け取り、次にあなたはそれをデータソースから取得することができます。 dataSource.getByUid()
解決
Id
がモデルに定義されていると仮定すると、次のことが必要です。
new kendo.data.HierarchicalDataSource({
transport: {
read: function(options) {
return "my/controller/" + options.Id;
}
}
});
.
ここでの例を参照してください。 http://jsfiddle.net/onabai/me4zz/2/<
edit :フルモデルにアクセスする必要がある場合は、id
を既知の場合、データソースでid
メソッドを使用して項目を取得します。
例:
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/