Я пытаюсь динамически изменять цвет фона каждой плитки с помощью некоторого свойства (в файле json у меня есть свойство в разных плитках, таких как "tileColorGroup": "Group1", "tileColorGroup": "Group2", "tileColorGroup": "Group3"
... и так далее, каждая группа имеет собственный цвет фона.
Я использую XML-представления и контроллеры JS. Я попытался добиться этого с помощью кода ниже в моем view1.controller.js
onInit : function () {
var oTileContainer = this.byId("TileContainer");
var oTiles = oTileContainer.getTile();
console.info("oTiles: " + oTiles); <--- no value
Может, существует лучший способ сделать это?
Заранее благодарим за любую помощь и предложения
TileContainer
не имеет метода getTile
- метод getTiles
. Возможно, поэтому ваш код не работает.
Также обратите внимание, что TileContainer
устарел в SAPUI5 1.50.
Вы можете расширить элемент управления 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>
Formatter.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;
}
Note: For adding the class you need to use any one of the bind property like title here so that we can get the instance of the Tile and add the corresponding class to it.