Article d’origine publié le mercredi 5 décembre 2012

L’autre jour, mon ami Bryan m’a posé la question suivante : « Comment faire pour créer un modèle d’affichage qui exécute sa propre fonction JavaScript une fois l’opération de rendu terminée ? » Après quelques recherches, un autre de mes amis a eu la gentillesse de décortiquer pour moi ce problème. Ainsi, pour appeler votre propre fonction au terme du rendu du modèle, vous devez ajouter ceci à la section JavaScript de votre modèle d’affichage. J’entends par là le code JavaScript que vous ajoutez sous la première balise <div> dans la page avec d’autres parties de code JavaScript utilisées pour le rendu de votre modèle. Dans ce code JavaScript, vous devez ajouter une légende similaire à celle-ci :

<!--#_
AddPostRenderCallback(ctx, function()
{             
     //code à exécuter
});
_#-->

 

Toutefois, cela ne suffit pas à résoudre le problème de Bryan, puisqu’il doit obtenir un ClientContext pour effectuer d’autres appels CSOM. Il s’avère en fin de compte que le simple fait d’ajouter cette section de code dans le délégué ne fonctionne pas, et ce pour la bonne raison que nous ne chargeons pas tous les scripts dans la page des résultats de recherche. Par conséquent, pour obtenir le contexte actuel, vous pouvez appeler Srch.ScriptApplicationManager.get_clientRuntimeContext(). Si vous avez besoin de charger d’autres scripts dans vos modèles d’affichage, vous pouvez utiliser la méthode EnsureScriptFunc en procédant comme ceci : EnsureScriptFunc("sp.js", "SP.ClientContext", function () { //callback  });.

Ce billet de blog a été traduit de l’anglais. La version originale est disponible à la page Running Client Script in a Display Template After Rendering is Complete in SharePoint 2013.