我正在尝试在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更相关。

因此,如果模型上有多个级别,则建议使用TreeTreeTable之类的控件。

关于javascript - 我如何在SAPUI5的Xml View 中编写无限行中继器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29855088/

10-11 15:41