Artículo original publicado el miércoles 5 de diciembre de 2012

Mi amigo Bryan me hizo el otro día una muy buena pregunta acerca de cómo crear una plantilla de visualización que se representara del modo habitual pero ejecutar, a posteriori, una función de JavaScript propia. Tras indagar un poco, otro de mis amigos, Jesús, fue lo suficientemente considerado como para compartir la pócima mágica para este problema. Para invocar una función propia después de que la plantilla se represente, es necesario agregar lo siguiente a la sección de JavaScript de la plantilla de visualización; me refiero al código JavaScript que se agrega debajo de la primera etiqueta <div> en la página, junto con cualquier otro código JavaScript que vaya a usar para representar la plantilla. En dicho código JavaScript deberá agregar la siguiente llamada:

<!--#_
AddPostRenderCallback(ctx, function()
{             
     //código que se desea ejecutar
});
_#-->

 

Ahora bien, con esto no bastaba para solucionar el problema de Bryan. Necesitábamos obtener un ClientContext para algunas llamadas a CSOM más que Bryan quería hacer. Como se demostró, solo con intentar crear esto en este delegado no funcionaba porque no se cargan todos los scripts en la página de resultados de la búsqueda. Por lo tanto, para poder obtener el contexto actual, se puede llamar a Srch.ScriptApplicationManager.get_clientRuntimeContext(). Si hay más scripts que sea necesario cargar en las plantillas de visualización, puede usar el método EnsureScriptFunc, así: EnsureScriptFunc("sp.js", "SP.ClientContext", function () { //callback  }); .

Esta entrada de blog es una traducción. Puede encontrar el artículo original en Running Client Script in a Display Template After Rendering is Complete in SharePoint 2013