Die Sammlung wurde nicht initialisiert - Sharepoint-Javascript

Bin ich immer die folgende Fehlermeldung beim Versuch, einen enumerator für die Sammlung von Listen: "Uncaught Error: Die Sammlung wurde nicht initialisiert. Es wurde nicht angefordert, oder die Anforderung wurde nicht ausgeführt. Es muss eventuell explizit gewünscht."

Passiert es auf der Linie var listEnumerator = lists.getEnumerator(); es scheint mir, dass es ein Problem in meinem Versuch zum laden von Listen in das client-Objekt mit context.load(lists);

Hier der Teil meines Codes, der das problem verursacht. Ich ' ve markiert die Stelle, kurz bevor der Fehler ausgelöst wird.

//____________________________Required function for accessing the host site's info.___________________________________
function getQueryStringParameter(param) {
var params = document.URL.split("?")[1].split("&");    
for (var i = 0; i < params.length; i = i + 1) {
    var singleParam = params[i].split("=");
    if (singleParam[0] == param) {
        return singleParam[1];
}   
}
}

//____________________________Begin checking for list_________________________
function checkForList(listToFind, typeOfListToCreateIfTheListIsMissing)
{
    var hostUrl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));
    var hostcontext = new SP.AppContextSite(context, hostUrl);
    var hostweb = hostcontext.get_web();

    var lists = hostweb.get_lists();
    context.load(lists);
    context.executeQueryAsync(checkIfListExistsUsingEnumerator(listToFind, lists, hostweb, typeOfListToCreateIfTheListIsMissing), onQueryFailed);
}
//Failed to get lists for some reason
function onQueryFailed(sender, args) {  
    alert('We failed to retrieve lists. \n' + args.get_message() + '\n' + args.get_stackTrace());  
}

//____________________________Does list exist?____________________________
function checkIfListExistsUsingEnumerator(listToFind, lists, hostweb, typeOfList)
{   
    var listExists = false; 
    //!!!!!!!!!!!!!!! ERROR HERE !!!!!!!!!!!!!!!!       
    var listEnumerator = lists.getEnumerator();
    var title;
    while (listEnumerator.moveNext()) 
    {
        title = listEnumerator.get_current().get_title();  

        if (title == listToFind)
        {  
            listExists = true;              
        }  
    }

    if (!listExists) 
    {
        alert("It appears that a required list does not already exist. \nClick ok, and we'll automatically create one for you.");
        //Create a new list
        createList(listToFind, hostweb, typeOfList); 
    }
    else if (listExists)
    {
        //Do nothing.
    }         
}

//____________________________If it doesn't, create one on the local site____________________________
function createList(nameOfNewList, hostweb, typeOfList) {
    var listCreationInfo = new SP.ListCreationInformation();
    listCreationInfo.set_title(nameOfNewList);

    if (typeOfList === "events")
    {
        listCreationInfo.set_templateType(SP.ListTemplateType.events);
    }
    else if (typeOfList === "contacts")
    {
        listCreationInfo.set_templateType(SP.ListTemplateType.contacts);
    }
    var lists = hostweb.get_lists();
    var newList = lists.add(listCreationInfo);
    context.load(newList);
    context.executeQueryAsync(onListCreationSuccess, onListCreationFail);
}

function onListCreationSuccess() {
    alert('List created successfully!');
}

function onListCreationFail(sender, args) {
    alert('Failed to create the list. ' + args.get_message());
}

Ich habe diese Frage sharepoint-javascript-Sammlung nicht initialisiert Fehler das scheint zu sein, ziemlich ähnlich wie mir, aber ich habe Probleme bei der Umsetzung der Lösung vorhanden, sodass ich denke, dass mein Fehler vielleicht eine andere Ursache haben.

Ich hab auch schon versucht die Abfrage für die Listen innerhalb der Funktion, die wirft den Fehler, aber das scheint nicht zu lösen, nichts.

Für ein wenig hintergrund, diese Funktionen sind zu Lesen versuchte, alle Listen aus dem app-host-Website überprüfen, um zu sehen, ob eine Liste existiert, und erstellen Sie eine Liste, wenn keine passende Liste vorhanden ist. Wenn es einen besseren Weg, das zu tun, als das, was ich bin versucht, wäre ich offen zu.

Irgendwelche Hinweise?


Einige Sachen habe ich schon ausprobiert, die scheinen nicht zu funktionieren:

Ändern die Asynchrone Abfrage

context.executeQueryAsync(checkIfListExists(listToFind, hostweb, typeOfListToCreateIfTheListIsMissing), onQueryFailed);

einem Synchronen ein.

context.executeQuery(checkIfListExists(listToFind, hostweb, typeOfListToCreateIfTheListIsMissing), onQueryFailed); 
  • Sie haben einen Tippfehler. Sie Kontext-variable hat den Namen "currentcontext", aber beim Aufruf der load-Methode, die Sie verwenden "Kontext" - Variablen. Versuchen, es zu ändern, um "currentcontext" variable.
  • Danke, aber das behebt nicht mein Problem. Es ist hier noch nicht gesehen, aber ich erstellen Sie eine Kontext-variable namens Kontext am Anfang des Codes -, dass currentcontext Zeile ist überflüssig/nicht mehr benötigte und sollte entfernt werden. (Ich werde Bearbeiten Sie die Frage, um es zu entfernen jetzt.)
  • wo ist dein context variable kommen?
  • var currentContext = SP.ClientContext.get_current(); ganz am Anfang des Programms.
InformationsquelleAutor Ectropy | 2014-05-29
Schreibe einen Kommentar