在所有母版页中添加栏

时间:2014-07-21 15:04:31

标签: sapui5

我有一个基于此样板的SplitApp http://goo.gl/zwNeH6 我有很多母版页和许多细节页。 如何在不重复XML视图代码和JS控制器代码的情况下将相同的元素(例如个人条形图)添加到所有母版页中?

我按以下代码添加页面:

function addDetailAndMaster(){
    var splitApp = sap.ui.getCore().byId("splitApp");



    //master
    splitApp.addMasterPage(sap.ui.xmlview("IntraMaster", "apps.appIntra.master.IntraMaster"));
        splitApp.addMasterPage(sap.ui.xmlview("intraAcqMaster", "apps.appIntra.master.intraAcqMaster"));
        splitApp.addMasterPage(sap.ui.xmlview("intraCesMaster", "apps.appIntra.master.intraCesMaster"));
            splitApp.addMasterPage(sap.ui.xmlview("segnIncrMaster", "apps.appIntra.master.segnIncrMaster"));
            splitApp.addMasterPage(sap.ui.xmlview("presMaster", "apps.appIntra.master.presMaster"));
            splitApp.addMasterPage(sap.ui.xmlview("dettMaster", "apps.appIntra.master.dettMaster"));

    //detail    
    splitApp.addDetailPage(sap.ui.xmlview("welcomeIntraDetail", "apps.appIntra.misc.welcomeIntraDetail"));  
        splitApp.addDetailPage(sap.ui.xmlview("advancedDetail", "apps.appIntra.detail.advancedDetail"));
        splitApp.addDetailPage(sap.ui.xmlview("storeProcedureDetail", "apps.appIntra.detail.storeProcedureDetail"));
            splitApp.addDetailPage(sap.ui.xmlview("operationDetail", "apps.appIntra.detail.operationDetail"));
            splitApp.addDetailPage(sap.ui.xmlview("rowDetail", "apps.appIntra.detail.rowDetail"));
            splitApp.addDetailPage(sap.ui.xmlview("rowDetailEdit", "apps.appIntra.detail.rowDetailEdit"));
                splitApp.addDetailPage(sap.ui.xmlview("artSnzNomDetail", "apps.appIntra.detail.artSnzNomDetail"));
                splitApp.addDetailPage(sap.ui.xmlview("formNewNomDogDetail", "apps.appIntra.detail.form.formNewNomDogDetail"));
                    splitApp.addDetailPage(sap.ui.xmlview("rowArtConNomDetail", "apps.appIntra.detail.rowArtConNomDetail"));

}

2 个答案:

答案 0 :(得分:0)

由于没有可用的API来实现您的要求(查看API reference),您可以尝试这种方法,

1)获取SplitApp

的所有母版页(也适用于详细页面)

var aMasterPages = splitApp.getMasterPages();

2)循环浏览它们并添加您需要的内容

for(var i=0; i<aMasterPages.length; i++)
{
  var oMasterPage = aMasterPages[i];

  /* Add header content */
  var oBar = new sap.m.Bar({contentMiddle: new sap.m.Label({text: "Title"}) });
  oMasterPage.addHeaderContent(oBar);

}

同样,&#39; addContent&#39;方法可用于向页面添加任何其他内容。 浏览我之前提到的API参考。

答案 1 :(得分:0)

将您的个人栏创建为单独的视图 - 控制器对,并从您的所有页面实例化它。视图控制器不一定必须是一个页面,它可以是任何东西,无论你想要多么微不足道或细粒度。

如果您没有特定的控制器代码,您确实可以使用已建议的资格等片段。