Skip to Content
0
Nov 05, 2019 at 11:26 AM

Formatter called multiple times from a XML view

327 Views Last edit Nov 05, 2019 at 11:38 AM 2 rev

Hello,
i created a formatter to show a text from an "i18n" model.

When the page (view) starts, the function "ageDescription" inside of the formatter is called 3 times:

  1. sBirthday is "undefined"
    sFormat is "undefined"
  2. sBirthday is valorized correctly
    sFormat is "undefined"
  3. sBirthday is valorized correctly
    sFormat is valorized correctly

Why this happen?
Is correct?
How i can handle a function not managing "undefined" values?

formatter.js

sap.ui.define([
	"tools/moment"
], function (DateFormat) {
	"use strict";
	return {
		ageDescription : function (sBirthday, sFormat) {			
			var oBundle = this.getView().getModel("i18n").getResourceBundle();
			var sAge = oBundle.getText("tooYoung");
			var sFromMyBd = moment(sBirthday, sFormat).fromNow();
			do.something();
			return sAge;
		}
	}
});

main.controller.js

sap.ui.define([
   "sap/ui/core/mvc/Controller",
   "sap/ui/model/json/JSONModel",
   "sap/ui/model/resource/ResourceModel",
   "sap/m/library",
   "model/formatter"
], function (Controller, JSONModel, ResourceModel, mobileLibrary, formatter) {
	"use strict";
	return Controller.extend("controller.main", {
		formatter: formatter,
		onInit : function () {
			do.something();
		}
 });
});

main.view.xml

<mvc:View
	controllerName="controller.main"
	xmlns="sap.m"
	xmlns:mvc="sap.ui.core.mvc"
	xmlns:l="sap.ui.layout"
	xmlns:f="sap.ui.layout.form">

	<Label text="{ 
		parts: [ 
			{path: '/user/birthday'}, 
			{path: '/user/dateFormat'} 
		], 
		formatter: '.formatter.ageDescription' }"
	class="sapUiSmallMargin"/>

</mvc:View>