Articolo originale pubblicato mercoledì 5 dicembre 2012

Qualche giorno fa il mio amico Bryan mi ha posto una domanda interessante sulla creazione di un modello di visualizzazione che esegue il rendering e in seguito la funzione javascript. Dopo un po' di ricerche, un altro mio amico, Jesus, è riuscito a svelare l'ingrediente segreto per risolvere il problema. Per avviare una funzione personalizzata dopo il rendering del modello è necessario aggiungerla alla sezione javascript del modello di visualizzazione, ovvero alla prima sezione javascript aggiunta sotto il primo tag <div> nella pagina, insieme agli altri js usati per il rendering del modello. In quella funzione javascript è necessario aggiungere un callout simile al seguente:

<!--#_
AddPostRenderCallback(ctx, function()
{             
     //codice da eseguire
});
_#-->

 

Ora, ciò non basta a risolvere il problema di Bryan. Bryan aveva bisogno di ottenere un ClientContext per alcune chiamate CSOM complementari che voleva fare. Abbiamo visto che la sola creazione all'interno di questo delegato non funziona perché non carichiamo tutti gli script nella pagina dei risultati di ricerca. Quindi, per ottenere il contesto corrente è possibile chiamare Srch.ScriptApplicationManager.get_clientRuntimeContext(). Se esistono altri script da caricare nei modelli di visualizzazione è possibile usare il metodo EnsureScriptFunc, così: EnsureScriptFunc("sp.js", "SP.ClientContext", function () { //callback  }); .

Questo è un post di blog localizzato. L'articolo originale è disponibile in Running Client Script in a Display Template After Rendering is Complete in SharePoint 2013