我想将 Tiles
动态添加到 TileContainer
。
我得到了一个 JSONObject
(jsonResponse),如下所示:
现在我想将 Tiles
添加到 TileContainer
。这里的功能:
var tc = this.getView().byId("container"); //TileContainer
for (var i = 0; i < jsonResponse.length; i++) {
alert(jsonResponse[i].Title);
tc.addTile(new sap.m.StandardTile( jsonResponse[i].id, {
icon: "sap-icon://" + jsonResponse[i].Icon,
number: jsonResponse[i].Number,
numberUnit: jsonResponse[i].NumberUnit,
title: jsonResponse[i].Title,
info: jsonResponse[i].Info,
press: that.onTilePress
}));
}
添加了图 block
,但没有任何内容。它只是白色的。
当我记录 jsonResponse[i].Title
时,我得到了 jsonObject
的值。
最佳答案
您不使用数据绑定(bind),这是一个错误,因为这是 sapui5 的核心:)
首先将 json 数据加载到 JSONModel 对象中
var model = new sap.ui.model.json.JSONModel({ data: jsonResponse });
this.getView().setModel(model);
然后将您的图 block 容器和图 block 绑定(bind)到您刚刚创建的模型
<TileContainer tiles={/data}>
<StandardTile
icon="{= 'sap-icon://' + ${Icon} }"
number="{Number}"
numberUnit="{NumberUnit}"
title="{Title}"
info="{Info}"
press="onTilePress" />
</TileContainer>
<小时/>
阅读您遇到的标题问题,您确定“jsonResponse”已加载到 JS 对象中还是只是一个字符串?
关于javascript - 动态添加 Tiles 到 TileContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45877446/