2017-08-25 4 views
-1

J'ai développé l'extension pour sharepoint. J'essayais de mettre en œuvre la légende personnalisée pour la bibliothèque de documents (en utilisant fancytree pour la présentation du contenu de la bibliothèque). Pour référence j'ai utilisé https://dev.office.com/sharepoint/docs/sp-add-ins/highlight-content-and-enhance-the-functionality-of-sharepoint-hosted-sharepoint.La légende Sharepoint 2013 n'est pas définie

J'ai défini la fonctionnalité de légende dans une fonction séparée execCallout (data). (pour des raisons de simplicité, les données sont omises).

J'ai deux scenarious: execCallout est lancé/appelé par l'utilisateur (pas de données préchargées) et execCallout est chargé avec les données de départ. Dans les deux cas, j'utilise le même execCallout.

function execCallout (data) { 
console.log("demo"); 
//get our launchpoint - where callout will appear 
var targetElement = document.querySelectorAll(".fancytree-active.fancytree-focused .fancytree-title")[0]; 


//Configure new Callout 
var calloutOptions = new CalloutOptions(); 
calloutOptions.ID = 'MyCustomCallOut'; 
calloutOptions.launchPoint = targetElement; 
calloutOptions.beakOrientation = 'leftRight'; 
calloutOptions.content = ' My Content'; 
calloutOptions.title = 'My Title'; 

// check for current callout 
var myCallOut = CalloutManager.createNewIfNecessary(calloutOptions); 

//Create custom action for callout 
var myAction = new CalloutActionOptions(); 
myAction.text = 'My Special Action'; 
myAction.onClickCallback = function(event, action) 
{ 
    alert("I can do whatever you want"); 
}; 

var newAction = new CalloutAction(myAction); 

//Add the action to the callout 
myCallOut.addAction(newAction); 
myCallOut.set({ openOptions: { event: "hover" } }); //or click 
myCallOut.open(); 

}

Le premier scénario fonctionne très bien, à savoir, le clic utilisateur est lancé callout/execCallout est appelé. Cependant, lorsque des données préchargées sont obtenues, "Uncaught ReferenceError: myCallOut n'est pas défini" (à partir de la console de débogage, je vois que la fonction a été appelée, mais calloutManager n'a aucune légende associée à mon launchPoint). Il semble que le calloutManager n'a pas été lancé. A tout moment, execCallout initié à partir de la console de débogage résout le problème.

Idées quoi et où est manquant sont les bienvenus.

Répondre

0

Mon problème sur le problème: le problème a été causé par le rendu fancytree. La légende a été lancée alors que "l'arbre" n'était pas entièrement rendu. Par défaut, lors du rendu, les valeurs étaient "perdues", donc le rendu par défaut de l'arborescence posait problème.

Solution: Rendu de l'arborescence initialisé manuellement avant les opérations d'appel, de sorte qu'aucune valeur/variable n'ait disparu.