我正在尝试在SAPUI5中显示复杂的json数据。
这是我的复杂数据:
results:{
"name" : "sample",
"child" : [
"name" : "sample",
"child" : [
"name" : "sample",
"child" : [
"name" : "sample",
"child" : [
]
]
]
]
}
在这里,内在的孩子是无限的。这些取决于我的数据。
所以这是我的问题是如何在xml视图中显示这种类型的数据。
以前我通过使用行中继器显示了这种类型的数据。那里的数据只有3级。但是现在它已经无限。因此,如何使用行中继器显示此类数据。
这是我的三级行中继器。
<c:RowRepeater rows="{path: bindingpath}" id="rowRepeater" >
<c:RowRepeater rows="{path: bindingpath/somePath}" >
<c:RowRepeater rows="{path: bindingpath/somePath/anotherpath}">
</c:RowRepeater>
</c:RowRepeater>
</c:RowRepeater>
最佳答案
这是一个非常有趣的问题,但我认为rowRepeater不会帮助您解决这个问题。
如果要绑定rowRepeater控件的row属性,则应传递一个数组,其中数组中的每个位置将是输出中的一行。
在结果对象中,只有一个“根节点”。如果您有两个或更多节点,rowRepeater将呈现您的输出。此外,绑定路径只能保存一个值,因此,如果您考虑动态更改它,则不适用于模型中的所有数据级别。
请参见下面的示例:
<!DOCTYPE html>
<html>
<head>
<script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" id="sap-ui-bootstrap" data-sap-ui-theme="sap_bluecrystal" data-sap-ui-libs="sap.ui.commons"></script>
<meta charset="utf-8">
<title>JS Bin</title>
<script>
// create the row repeater control
var oRowRepeater = new sap.ui.commons.RowRepeater("rr1");
oRowRepeater.setNoData(new sap.ui.commons.TextView({text: "Sorry, no data available!"}));
//var dataObject = {data: ["a","b"]};
var dataObject = { data: [
{ name: "A",
children: [
{name: "A1",
children: [
{name: "A1a"}
]
},
{name: "A2"}
]
},
{name: "B"} // try to remove this line... the rowRepeater won't be rendered as there will be one position
]};
// create JSON model
var oModel = new sap.ui.model.json.JSONModel(dataObject);
sap.ui.getCore().setModel(oModel);
//create title
var oTitle = new sap.ui.core.Title({text:"Letters"});
oRowRepeater.setTitle(oTitle);
//configure the RowRepeater
oRowRepeater.setDesign("Standard");
// oRowRepeater.setNumberOfRows(5);
// oRowRepeater.setCurrentPage(1);
oRowRepeater.setTitle(oTitle);
var oRowTemplate = new sap.ui.commons.TextView({
text: "{name}",
});
oRowRepeater.bindRows("/data", oRowTemplate);
oRowRepeater.placeAt("content");
</script>
</head>
<body class="sapUiBody" role="application">
<div id="content"></div>
</body>
</html>
与Element binding相比,您需要的与Aggregation binding更相关。
因此,如果模型上有多个级别,则建议使用Tree或TreeTable之类的控件。
关于javascript - 我如何在SAPUI5的Xml View 中编写无限行中继器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29855088/