Ich versuche, einen benutzerdefinierten Dialog zu erstellen, um Text und Link in der Fußzeile zusammen mit Schaltflächen anzuzeigen. Ich weiß nicht, wie ich das vorhandene Rendering dafür ändern soll, also schrieb ich einen einfachen Renderer, um das Verhalten zu überprüfen. Dies ist mein Code:Benutzerdefiniertes Steuerelement erweitert sap.m.Dialog
sap.m.Dialog.extend("EnhancedDialog",{
metadata:{
properties:{
footerLabelText:{type:"string",defaultValue:null},
footerLinkText:{type:"string",defaultValue:null},
footerLinkHref:{type:"string",defaultValue:null}
},
aggregations:{
_label:{type:"sap.m.Label",multiple:false,visibility:"hidden"},
_link:{type:"sap.m.Link",multiple:false,visibility:"hidden"}
},
events:{}
},
init:function(){
this.getAggregation("_label", new sap.m.Label({text:"Check"}));
this.getAggregation("_link",new sap.m.Link({text:"Link"}));
},
setFooterLabelText:function(oLabelText){
this.setProperty("footerLabelText",oLabelText,true);
this.getAggregation("_label").setText(oLabelText);
},
setFooterLinkText:function(oLinkText){
this.setProperty("footerLinkText",oLinkText,true);
this.getAggregation("_link").setText(oLinkText);
},
setFooterLinkHref:function(oLinkHref){
this.setProperty("footerLinkHref",oLinkHref,true);
this.getAggregation("_link").setHref(oLinkHref);
},
renderer:{
render:function(oRM,oControl){
oRM.write("<div");
oRM.writeControlData(oControl);
oRM.writeClasses();
oRM.write(">");
oRM.renderControl(oControl.getAggregation("_label"));
oRM.renderControl(oControl.getAggregation("_link"));
oRM.write("</div");
}
}
});
var enhancedDialog=new EnhancedDialog();
var btn=new sap.m.Button({
text:"Click Here!",
press: function(){
enhancedDialog.open();
}
});
Aber ich erhalte den Fehler
Dialog.js:6 Uncaught TypeError: Cannot read property 'setInitialFocusId' of undefined
wenn ich den Knopf am klicken.
Kann jemand darauf hinweisen, was ich falsch mache?
Und wie ändert man das vorhandene Renderer-Verhalten, um Text in der Fußzeile anzuzeigen?
Dies ist, was ich machen möchte:
Ein Tipp zum Debuggen: Drücken Sie Strg + Alt + P und aktivieren Sie Debug-Quellen. Dann erhalten Sie lesbare UI5-Quellen. – schnoedel
Vielen Dank, @schnoedel! Ich war auf der Suche nach einer solchen Art von Funktion, aber ich konnte nicht finden. Gibt es eine Möglichkeit zu sehen, welche Funktionen (wie _createToolbarButtons) uns zur Verfügung stehen? Und ich habe deinen Tipp zum Debuggen nicht bekommen, wo genau ich ctrl + alt + p drücken muss, weil es im Browser nicht funktioniert. – AlacritousQueller
Es tut mir leid, es muss Strg + Alt + Shift + p sein. Setzen Sie den Fokus auf eine UI5-App und drücken Sie die Verknüpfung. Und vergessen Sie nicht später, Debugging-Quellen auszuschalten, weil es ziemlich langsam ist. Zu Ihrer zweiten Frage: Sie können sich den Quellcode von OpenUI5 bei github immer ansehen. In Ihrem Fall habe ich es [hier] gefunden (https://github.com/SAP/openui5/blob/rel-1.38/src/sap.m/src/sap/m/Dialog.js#L1104). – schnoedel