Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

SAPUI5 - XML view and Formatter

Dear all,

I'm going crazy! I have written a small app with a XML view.

In this app, the Formatter Method is not processed. Doing the same staff in a JS-view runs like hell.

Here's my code...

Model:

{

    "RESULT": [

        {   "WERKS": "1102",

            "QTY_PROZ": 4.564,

            "INFO": "Heidelberg

        },

        {   "WERKS": "1701",

            "QTY_PROZ": 16.857,

            "INFO": "Bern"

        }

    ]

}

Controller:

sap.ui.controller("dummy.main", {

  onInit: function() {

  var oModel = new sap.ui.model.json.JSONModel();

  oModel.loadData("json/plants.json", false);

  sap.ui.getCore().setModel(oModel,"MAIN");

  },

});

And my View:

<core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"

  controllerName="dummy.main" xmlns:html="http://www.w3.org/1999/xhtml">

    <Page showHeader="false" enableScrolling="false">

        <TileContainer id="container" tiles="{MAIN>/RESULT}" allowAdd="false" editable="false">

            <StandardTile number     = "{MAIN>QTY_PROZ}"

                          numberUnit = "%"

                          info       = "{MAIN>INFO}"

                          icon       = "sap-icon://building"

                          title      = "{ path: 'MAIN>WERKS', formatter: 'my.Formatter.getName() }"/>

        </TileContainer>

    </Page>

</core:View>

the index.html

<!DOCTYPE HTML>

<html>

  <head>

  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/>


  <script src="resources/sap-ui-core.js"

  id="sap-ui-bootstrap"

  data-sap-ui-libs="sap.m"

  data-sap-ui-theme="sap_bluecrystal">

  </script>

  <script>

  sap.ui.localResources("dummy");

  var app = new sap.m.App({initialPage:"idmain1"});

  var page = sap.ui.view({id:"idmain1", viewName:"dummy.main", type:sap.ui.core.mvc.ViewType.XML});

  app.addPage(page);

  app.placeAt("content");

  </script>

  <script src="util/Formatter.js"></script>

  </head>

  <body class="sapUiBody" role="application">

  <div id="content"></div>

  </body>

</html>

Last but not least my Formatter.js which is in folder "util"

jQuery.sap.declare("my.Formatter");

my.Formatter = {

  getName : function (value) {

  if( value == "1102") return "DE";

  if( value == "1701") return "CH";

  return "xx";

  }

};

As you can see, I'm trying to call a formatter for the title property of a StandardTile. the formatter method is in the file util/Formatter.js

But it is not processed by the runtime engine. The tile is displayed on the screen, but w/o the property "title".

I can call the method inside my Chrome debugger.manually, so from my point of view the code should know about the method.

Moving the getName directly into the controller is the same...

Any hint, why my formatter isn't called?

I really appriciate your support.

Tags:
Former Member
replied

Ah I see:

  1. You don't need to include a reference in your index.html to your formatter
  2. Since your formatter class is in a /util folder, you should declare it as "util.my.Formatter", and in your Controller add a jQuery.sap.require("util.my.Formatter") reference at the top
  3. Same in your view; instead of referencing it as "my.Formatter.getName", use "util.my.Formatter.getName"
0 View this answer in context
Not what you were looking for? View more on this topic or Ask a question