私はjsに関してはかなり初心者ですが、今日は私が本当に理解していないjsに出くわしたので、やりたいと思います。光を当てていただけませんか?剣道が関わっていますが、問題はプレーンなjsです。
ネストされたグリッドがあります。各行は他のグリッドに展開でき、このグリッドのそれぞれに独自のデータソースがあります。ユーザーがクリックすると、以下の方法でデータソースにデータソースを1つずつ入力しますが、create呼び出しから非同期応答を受信したときに、データソースに読み取りを強制する際に問題が発生しました。(読み取りを呼び出すことはかなり間違ったことですが、剣道には独自のバグがあります-ここでは重要ではありません。)私の問題は、read()を呼び出すインスタンスがなかったということでした。メソッドはデータソースを返し、それをグリッドに割り当てるだけです。イベントが戻ったときに、正しいものを取得できるものへの参照が見つかりません。からのデータソースインスタンス。これは、ここでは別のコンテキストです。
これを解決するために、データソースを構築するメソッドにデータソース変数を追加し、データソースの代わりに変数を返します。これは同じことです。ただし、これは問題のあるread()を呼び出すための何かを持っているのに役立ちます。ここで、createハンドラーで、init中にメソッドで返す変数に対してcreateを呼び出します。それはうまくいきますが、すべてのデータソースがinitの後に独自のインスタンスでreadを呼び出しているかどうかはわかりませんか?
function _getDatasource() {
var datasource = new kendo.data.DataSource({
transport: {
read: {
url: serviceBaseUrl + "ReadQuestionnaire",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
},
create: {
url: serviceBaseUrl + "CreateQuestionnaire",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
complete: function (jqXhr, textStatus) {
if (CheckForExceptions(jqXhr, textStatus) == false) {
// this is the variable I am not sure about
// after innit does this always refers to this same datasource ?
datasource.read();
}
}
}
}
});
return datasource;
}