domingo, 24 de agosto de 2014

Funciones SP.SOD.registerSod y SP.SOD.registerSodDep

SP.SOD.registerSod nos permite registrar un archivo de javascript de forma sincrónica. También podría utilizarse $includeScript, este método es similar, pero carga el script de forma asincrónica, lo cual a veces puede ocasionar problemas, Ej: llamar a una función que aún no se cargó.

La misma se define de la siguiente manera: SP.SOD.registerSod(key, url);

Es importante que el parámetro url sea una url relativa. Se recomienda usar la variable global definida por Sharepoint: this.L_Menu_BaseUrl. La misma se define desde el lado del servidor con el siguiente método: SP.Web.get_serverRelativeUrl()

Primero subo la librería jquery y myscript.js a la librería “Site Assets

image

En una página agrego el webpart de Script Editor, y agrego el siguiente código:

image

<script>
SP.SOD.registerSod('jquery-1.11.1.min.js', this.L_Menu_BaseUrl + "/SiteAssets/jquery-1.11.1.min.js");
SP.SOD.registerSod('myscript.js', this.L_Menu_BaseUrl + "/SiteAssets/myscript.js");
SP.SOD.registerSodDep('myscript.js', 'jquery-1.11.1.min.js');

 SP.SOD.executeFunc("myscript.js", null, function() {
    console.log("SP.SOD.executeFunc called");
    Probando();
});  </script>

image

Cómo pueden ver hay dos funciones más utilizadas: SP.SOD.registerSodDep y SP.SOD.executeFunc. La primera permite registrar un archivo como una dependencia de otro archivo. En este caso lo que hice es que antes de registrar myscript.js, primero registro jquery-1.11.1.min.js, ya que myscript.js hace uso de funciones de jquery. La función SP.SOD.executeFunc(key, functionName, fn), permite asegurar que primero se carga el archivo definido con el parámetro key, antes de llamar a la función “fn”. Este métod ya lo había comentado en este post: http://todosharepoint.blogspot.com.ar/2014/07/funcion-spsodexecutefunc-en-sharepoint.html

Dentro de la función “fn”, llamo al método “Probando();”, el cual está definido dentro de myscripts.js.

El archivo myscript,js tiene el siguiente código

$( document ).ready(function() {
    alert("Se cargo la página...Listo Jquery");
});

function Probando()
{
    alert("Se Ejecutó Probando...");
}

Guardo la página y veo los resultados.

Primero me lanza el alert del método “Probando” y después el alert de $(document).ready

image

image

Más información:

http://msdn.microsoft.com/en-us/library/ff408081.aspx

No hay comentarios:

Publicar un comentario