Я пытаюсь создать собственный диалог, чтобы показать текст и ссылку в нижнем колонтитуле вместе с кнопками. Я не знаю, как изменить существующий рендеринг для этого, поэтому я написал простой рендерер, чтобы проверить поведение. Это мой код:Пользовательский контроль расширения 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();
}
});
Но я получаю ошибку
Dialog.js:6 Uncaught TypeError: Cannot read property 'setInitialFocusId' of undefined
, когда я нажав на кнопку.
Может кто-нибудь указать, что я делаю неправильно?
И как изменить существующее поведение рендеринга для отображения текста в нижнем колонтитуле?
Совет для отладки: нажмите ctrl + alt + p и включите источники отладки. Затем вы получаете читаемые источники UI5. – schnoedel
Спасибо большое, @schnoedel! Я искал такой тип функции, но не смог найти. Есть ли способ узнать, какие функции доступны для всех функций (например, _createToolbarButtons)? И я не получил ваш совет для отладки, где именно мне нужно нажать ctrl + alt + p, потому что он не работает в браузере. – AlacritousQueller
Мне жаль, это должно быть ctrl + alt + shift + p. Просто установите фокус в приложение UI5 и нажмите ярлык. И не забудьте впоследствии отключить источники отладки, потому что это довольно медленно. К вашему второму вопросу: вы всегда можете посмотреть исходный код OpenUI5 в github. В вашем случае я нашел его [здесь] (https://github.com/SAP/openui5/blob/rel-1.38/src/sap.m/src/sap/m/Dialog.js#L1104). – schnoedel