我正在尝试创建一个我有Panel
的屏幕。主Panel
有另一个Panel
,此Panel
的{{1}}有四个Grid
,每个HBoxes
最终有HBox
}}
Button
我可以看到每个 onInit:function(){
oMainPanel.removeAllContent();
var oHbox1 = new sap.m.HBox(jQuery.sap.uid());
var oHbox2 = new sap.m.HBox(jQuery.sap.uid());
var oHbox3 = new sap.m.HBox(jQuery.sap.uid());
var oHbox4 = new sap.m.HBox(jQuery.sap.uid());
var oPanel ;
var oGrid;
for (var i = 0; i < 4; i++) {
oGrid = new sap.ui.layout.Grid(jQuery.sap.uid(),{
hSpacing: 1,
vSpacing: 1,
content: [oHbox1,oHbox2,oHbox3,oHbox4]
});
oPanel = new sap.m.Panel(jQuery.sap.uid(),{
headerText: "Some Text",
expandable: true,
expanded: true,
width:"100%",
content:[oGrid]
});
jQuery.sap.delayedCall(100, this, function() {
});
oMainPanel.addContent(oPanel);
}
中的内容,但仅限于最后一个HBox
。我认为这些是重叠的。如何在所有Panel
中显示所有HBoxes
的内容?
答案 0 :(得分:2)
您正尝试将// Object references (memory location) are stored in variables
var objA = {
x: "test",
y: function(){ alert("Hi"); }
};
var objB = {
x: "test",
y: function(){ alert("Hi"); }
};
var objC = {
x: "test",
y: function(){ alert("HI"); }
};
// Stringify the object using a replacer function that will explicitly
// turn functions into strings so they won't be skipped like regular
// JSON.stringify() does
function stringifyAllMembers(obj) {
return retVal = JSON.stringify(obj, function(key, val) {
return (typeof val === 'function') ? '' + val : val;
});
}
// Get the string primitive value of each object
var a = stringifyAllMembers(objA);
var b = stringifyAllMembers(objB);
var c = stringifyAllMembers(objC);
// Compare each primitive to compare each object:
console.log(a === b); // true
console.log(a === c); // false
的相同实例用作不同HBox
的{{1}}。您需要为每个content
创建一个新实例。
尝试做类似的事情:
Grids
或在循环中初始化变量(Panel
, oGrid = new sap.ui.layout.Grid(jQuery.sap.uid(),{
hSpacing: 1,
vSpacing: 1,
content: [new sap.m.HBox(), new sap.m.HBox(),
new sap.m.HBox(), new sap.m.HBox()]
等)
答案 1 :(得分:0)
我通过使用forEach而不是for循环解决了这个问题。