La collection n'a pas été initialisé - Sharepoint Javascript

J'obtiens l'erreur suivante lorsque vous tentez d'obtenir un agent recenseur pour une collection de listes: "Erreur non Interceptée: La collection n'a pas été initialisé. Il n'a pas été demandée ou la demande n'a pas été exécuté. Il peut avoir besoin d'être explicitement demandé."

Il arrive sur la ligne var listEnumerator = lists.getEnumerator(); il me semble qu'il y a un problème dans ma tentative de charger des listes dans l'objet du client avec context.load(lists);

Voici la partie de mon code qui est à l'origine du problème. J'ai marqué le lieu juste avant l'erreur est levée.

//____________________________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());
}

J'ai regardé cette question sharepoint javascript collection pas initialisé erreur qui semble être assez similaire à la mienne, mais je vais avoir de la difficulté à la mise en œuvre de la solution fournie il y a, me faisant penser à mon erreur peut être avoir une cause différente.

J'ai aussi essayé d'interrogation pour les listes à l'intérieur de la fonction qui est en train de jeter l'erreur, mais cela ne semble pas résoudre quoi que ce soit.

Pour un peu de fond, ces fonctions sont de tenter de lire toutes les listes de l'application hôte du site, vérifier pour voir si une liste existe, et de créer une liste si aucune correspondance n'liste existe. Si il ya une meilleure façon de le faire que ce que je suis d'essayer, je serais ouvert à cela aussi.

Les pointeurs?


Certaines choses que j'ai essayé et qui ne semble pas fonctionner:

La modification de la requête Asynchrone

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

à un Synchrone un.

context.executeQuery(checkIfListExists(listToFind, hostweb, typeOfListToCreateIfTheListIsMissing), onQueryFailed); 
  • Vous avez une faute de frappe. Vous variable de contexte qui a le nom "currentcontext", mais lorsque vous appelez la méthode de chargement que vous utilisez le "contexte" à la variable. Essayez de changer pour "currentcontext" à la variable.
  • Merci, mais cela ne résout pas mon problème. Il n'est pas vu ici, mais je créer une variable de contexte de contexte au tout début du code, qui currentcontext ligne est redondant/inutiles et doit être supprimé. (Je vais modifier la question de l'enlever maintenant.)
  • où est votre context variable en venir?
  • var currentContext = SP.ClientContext.get_current(); au tout début du programme.
InformationsquelleAutor Ectropy | 2014-05-29