使用工厂函数进行聚合绑定
xmlView 中:
<mvc:View
controllerName="sap.ui.demo.wt.controller.App"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc"
displayBlock="true">
<App>
<pages>
<Page content="{path:'Tiles>/Tiles',factory:'.tileFactory'}">
</Page>
</pages>
</App>
</mvc:View>
控制器:
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/ui/model/json/JSONModel"
], function (Controller, JSONModel) {
"use strict";
return Controller.extend("sap.ui.demo.wt.controller.App", {
onInit: function(){
var oModel = new JSONModel("./model/data.json");
this.getView().setModel(oModel,"Tiles");
},
tileFactory: function(sId,oContext){
var oUIControl = null;
var type = oContext.getProperty("type");
switch(type){
case "STD":
var title = oContext.getProperty("Title");
oUIControl = new sap.m.StandardTile();
oUIControl.setTitle(title);
break;
case "NEWS":
var title = oContext.getProperty("Title");
var newsContent = new sap.m.NewsContent({contentText:title});
oUIControl = new sap.m.GenericTile();
oUIControl.addTileContent(new sap.m.TileContent({content:newsContent}));
break;
case "IMG":
var src = oContext.getProperty("src");
var imgContent = new sap.m.ImageContent({src});
oUIControl = new sap.m.GenericTile();
oUIControl.addTileContent(new sap.m.TileContent({content:imgContent}));
break;
}
return oUIControl;
}
});
});
data.json:
{
"Tiles":[
{
"type": "STD",
"Title": "Standard Tile"
},
{
"type": "NEWS",
"Title": "NEWS Tile"
},
{
"type": "IMG",
"src": "https://1.bp.blogspot.com/-2YLGmdxqXMk/V58ki-s5DLI/AAAAAAAANhs/jcSRMEeJN_89vXNdrie1jDGFhF5X-yh4ACLcB/s1600/ui5.png"
}
]
}