Execute qualquer outro javascript depois que os modelos de exibição renderizarem o conteúdo

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/49349

  •  09-12-2019
  •  | 
  •  

Pergunta

Esta é a questão:

  1. Eu crio um contentbysearchwebpart, especificado com meus modelos de exibição personalizados. '
  2. Quero executar algum outro código JavaScript, depois que os modelos de exibição renderizaram o conteúdo
  3. Em seguida, registro meu arquivo javascript personalizado no modelo de exibição.

            $includeScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/Slider.js")'
    

    O problema é que meu código do arquivo Slider.js executa antes O código JavaScript 'modelos de exibição' faz.

Alguém pode me fornecer uma maneira de executar meu código Slider.js depois Os modelos de exibição renderizaram o conteúdo do ContentBysearchWebPart (CSWP)?

Foi útil?

Solução

:) meu problema está resolvido.

Eu fiz o seguinte:

  1. Registrou o arquivo JS personalizado em Control_YourTemplatename.html File (como Control_banner).

    $includeScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/HWScripts/Banner.js");

  2. Adicionado essas três linhas no primeiro Div após a etiqueta corporal, no arquivo yourtemplatename.html (como banner.html).

     <!--#_  
     ctx.OnPostRender = [];
     ctx.OnPostRender.push(function(){ 
        CustomMethodWhichIsIncludedInTheCustomJSFile();
     });
     _#-->  
    

Mas uma solução melhor é fornecida abaixo:

Você pode pular a definição OnPostRender você mesmo.Os modelos de exibição CBS têm esta função integrada:

<!--#_
   AddPostRenderCallback(ctx, function(){
       alert(ctx.Title + "finished rendering!");
   });
_#-->

Há também AddPreRenderCallback(ctx, function(){});

Outras dicas

Você pode adicionar uma linha de código após incluir o script,

ExecuteOrDelayUntilScriptLoaded( function() { <your custom function name>; }, 'name of   display template ');

por exemplo:

ExecuteOrDelayUntilScriptLoaded( function() { console.dir( SP.Res ); }, 'sp.js');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top