title: Formatter called multiple times or too soon with `undefined`
body: <p>I'm using OpenUI5. Using the <code>formatter.js</code>, I have formatted some text in my view.</p>
  
  <p>But my formatter is called 3 times:</p>
  
  <ol>
  <li><p>When I bind the model to panel control: <code>oPanel.setModel(oModel, "data");</code>
  both <code>sBirthday</code> and <code>sFormat</code>  are <code>undefined</code>.</p></li>
  <li><p>After <code>onInit()</code> is finished and the view is rendered:
  <code>sBirthday</code> is valorized correctly and <code>sFormat</code> is <code>undefined</code></p></li>
  <li><p>Again: both <code>sBirthday</code> and <code>sFormat</code> ara valorized correctly.</p></li>
  </ol>
  
  <p>Why does this happen? Is it correct?<br>
  The app get an error, because the <code>ageDescription()</code> in the formatter, can't manage <code>undefined</code> values.</p>
  
  <p><strong>formatter.js</strong></p>
  
  <pre class="lang-js prettyprint-override"><code>sap.ui.define([], function () {
    "use strict";
  
    return {
      ageDescription : function (sBirthday, sFormat) {
        do.something();
        var sFromMyBd = moment(sBirthday, sFormat).fromNow();
        do.something();
        return sAge;
      }
    }
  });
  </code></pre>
  
  <p><strong>main.view.xml</strong></p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;mvc:View
    controllerName="controller.main"
    xmlns="sap.m"
    xmlns:mvc="sap.ui.core.mvc"&gt;
    &lt;Panel id="user-panel-id"&gt;
      &lt;Input id="name-input-id" enabled="false" value="{data&gt;/user/name}" /&gt;
      &lt;Label text="{i18n&gt;age}: " class="sapUiSmallMargin"/&gt;
      &lt;Label text="{
        parts: [
          {path: 'data&gt;/user/birthday'},
          {path: 'data&gt;/user/dateFormat'}
        ],
        formatter: '.formatter.ageDescription' }"/&gt;
    &lt;/Panel&gt;
  &lt;/mvc:View&gt;
  </code></pre>
  
  <p><strong>Main.controller.js</strong></p>
  
  <pre class="lang-js prettyprint-override"><code>sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/model/json/JSONModel",
    "model/formatter"
  ], function (Controller, JSONModel, formatter) {
    "use strict";
  
    return Controller.extend("controller.main", {
      formatter: formatter,
      onInit: function () {
        var oModel = new JSONModel();
        var oView = this.getView();
        oModel.loadData("model/data.json");
        var oPanel = oView.byId("user-panel-id");
        oPanel.setModel(oModel,"data");
        do.something();
      },
    });
  });
  </code></pre>
  
  <p><strong><em>data.json</em></strong></p>
  
  <pre><code>{
    "user": {
      "name": "Frank",
      "surname": "Jhonson",
      "birthday": "23/03/1988",
      "dateFormat": "DD/MM/YYYY",
      "enabled": true,
      "address": {
        "street": "Minnesota street",
        "city": "San Francisco",
        "zip": "94112",
        "country": "California"
      }
    }
  }
  </code></pre>