我尝试用一些属性动态更改每个瓦片的背景色(在json文件中,我在不同的瓦片中有属性,比如"tileColorGroup": "Group1", "tileColorGroup": "Group2", "tileColorGroup": "Group3"
…等等,每个组都有自己的背景色。
我使用的是XML视图和JS控制器。我试图通过以下代码在我的view1.controller.js
中实现这一点
onInit : function () {
var oTileContainer = this.byId("TileContainer");
var oTiles = oTileContainer.getTile();
console.log("oTiles: " + oTiles); <--- no value
也许还有更好的方法?
提前感谢的任何帮助和建议
TileContainer
没有方法getTile
-该方法是getTiles
。这可能就是您的代码无法工作的原因。
另外请注意,在SAPUI5 1.50中不推荐使用TileContainer
。
您可以扩展GenericTile
控件,为您可以绑定的背景颜色提供一个属性。
如果只想使用TileContainer
控件,那么可以使用格式化程序和CSS来实现。
查看
<TileContainer
id="container"
class="tileContainerHolder"
tiles="{/TileCollection}">
<StandardTile
icon="{icon}"
type="{type}"
number="{number}"
numberUnit="{numberUnit}"
title="{parts: [ 'title', 'tileColorGroup'], formatter:'my.Formatter.addBackgroundColor'}"
info="{info}"
infoState="{infoState}" />
</TileContainer>
格式化程序.js
jQuery.sap.declare("my.Formatter");
my.Formatter = {
addBackgroundColor: function (title, tileColorGroup) {
this.addStyleClass("grp" + tileColorGroup);//Add group class
return title;
}
};
CSS
.tileContainerHolder .grpGroup1.sapMTile {
background: #f0ab00;
}
.tileContainerHolder .grpGroup2.sapMTile {
background: #007cc0;
}
.tileContainerHolder .grpGroup3.sapMTile {
background: #008a3b;
}
注意:要添加类,您需要使用任何一个绑定属性类似的title,以便我们可以获得Tile的实例并向其添加相应的类。