SharePointでユーザーのサブWebのサブWebを受信しようとしました。 サブWebを受け取るための最初の呼び出し(関数getSubWebs())はすべて問題ありません。サブWebが受信され、それらを反復処理できます。getEnumerationのSECOND呼び出しでコレクションが初期化されていません。
しかし、私は同じ種類のコードを使ってそれらのウェブのサブウェブを取得しようとしています。 var webSubEnumerator = subwebCollection.getEnumerator(); )(私はロードを使用していてもエラーに
The collection has not been initialized
を投げる前と(単にウェブ親要求に好き)ExecuteQueryAsyncの「成功」-partの内側にあるされています。
ここで問題が発生する可能性はありますか?
var context = SP.ClientContext.get_current();
var user = context.get_web().get_currentUser();
var web = context.get_web();
var lists = web.get_lists();
var parrentwebCollection = null;
ExecuteOrDelayUntilScriptLoaded(getSubWebs, "sp.js");
function getSubWebs(){
parrentwebCollection = web.getSubwebsForCurrentUser(null);
context.load(parrentwebCollection)
context.executeQueryAsync(onGetSubwebsSuccess, onGetSubwebsFail);
}
function onGetSubwebsSuccess(sender, args){
var webEnumerator = parrentwebCollection.getEnumerator();
// Everything works FINE on this getEnumerator()
while (webEnumerator.moveNext()){
var webParrent = webEnumerator.get_current();
var parrenttitel = webParrent.get_title();
var parrenturl = webParrent.get_url();
//Load Subs From Parrent
var subwebCollection = null;
subwebCollection = webParrent.getSubwebsForCurrentUser(null);
if (subwebCollection != undefined && subwebCollection != null) {
context.load(subwebCollection);
context.executeQueryAsync(onGetSSubwebsSuccess, onGetSSubwebsFail);
function onGetSSubwebsSuccess(sender, args) {
console.log("getSubWebs query successful")
var webSubEnumerator = subwebCollection.getEnumerator();
// THIS getEnumerator(), however throws an exception
while (webSubEnumerator.moveNext()){
console.log("After While")
var subweb = webSubEnumerator.get_current();
var subtitel = subweb.get_title();
}
}
function onGetSSubwebsFail(sender, args){
alert("Request to retrieve subwebs failed. Error: " + args.get_message())
}
}
}
}
function onGetSubwebsFail(sender, args){
alert("Request to retrieve subwebs failed. Error: " + args.get_message())
}
私は成功()内だということに注意してください - 問題 - だから私のこれは「それがある前に、非同期データを読み取ろうとする」一般的ではありません信じているにexecuteQueryAsync().
の機能。