Avalados por :

Como criar um renderizador para controles personalizados no SAPUI5: Guia prático e exemplos completos

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 2 Vistas
0
Cargando...

Olá,

Gostaria de entender como posso criar um renderizador para o meu controle personalizado ou para um controle integrado.

Uma das formas que encontrei é ao criar um controle personalizado, fornecer uma função de renderização e renderizá-lo usando as instâncias oRendererManager e oControl que você obtém.

No entanto, gostaria de usar uma classe de renderizador separada para uma ou mais classes de controle.

Li sobre isso em SAPUI5 SDK - Demo Kit

Entendi a parte teórica, mas não muito na perspectiva prática.

Alguém poderia me indicar um link onde exemplos práticos mais completos são mostrados? Ou se alguém puder compartilhar um exemplo simples, seria ótimo.

Obrigado antecipadamente.

Amjad...

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Ninguém tem uma resposta ?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Amjad,

Experimente isto:

JS Bin - Depuração colaborativa de JavaScript

Alterei a forma de declarar o renderizador personalizado.

Espero que isso ajude,

Cumprimentos

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Amjad,

Não acredito que seja necessário estender a classe sap.ui.renderer.core, acredito que só precisa ser um objeto estático que implemente a função de renderização, ou seja,

customrenderers.MyRenderer = {

"renderizador" : function(rm, oControl) {

}

}

Saudações,

Jason

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Obrigado pelas suas respostas Angel e Jason.

Eu tinha tentado isso inicialmente, mas não consigo fazer funcionar.

Estou recebendo um erro de tempo de execução "erro de tipo: r indefinido"

Aqui está o que eu fiz...

Tenho um controle personalizado definido da seguinte forma:

sap.ui.core.Control.extend("customcontrols.HelloWorld", {

metadata : {

properties : {

"value" : "string"

},

aggregations: {

"_tf" : {type : "sap.ui.commons.TextField", multiple : false, visibility: "hidden"},

"_btn" : {type : "sap.ui.commons.Button", multiple : false, visibility: "hidden"}

},

events: {

"search" : {}

}

},

init: function() {

var that = this;

this.setAggregation("_tf", new sap.ui.commons.TextField({

change: function(oEvent){

that.setProperty("value", oEvent.getParameter("newValue"), true);

}

}));

this.setAggregation("_btn", new sap.ui.commons.Button({

text: "Buscar",

press: function(){

that.fireSearch();

}

}));

},

setValue: function(sValue){

this.setProperty("value", sValue, true);

this.getAggregation("_tf").setValue(sValue);

return this;

},

renderer :"customrenderers.MyRenderer"

});

Meu renderizador está definido da seguinte forma:

sap.ui.core.Renderer.extend("customrenderers.MyRenderer",

{

render : function(oRm, oControl)

{

oRm.write("<div");

oRm.writeControlData(oControl); //† estabelece o ID do UI5 no controle e torna os controles eventáveis

oRm.addClass("meuCampoDeBusca");

oRm.writeClasses();

oRm.write(">");

oRm.renderControl(oControl.getAggregation("_tf"));

oRm.renderControl(oControl.getAggregation("_btn"));

oRm.write("</div>");

}

});

e finalmente aqui está meu arquivo index:

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<script src="resources/sap-ui-core.js"

id="sap-ui-bootstrap"

data-sap-ui-libs="sap.ui.commons"

data-sap-ui-theme="sap_gold"

></script>

</head>

<body>

<script>

var oHello = new customcontrols.HelloWorld();

oHello.placeAt("content");

</script>

</body>

</html>

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?