我正在使用OpenUI5。使用formatter.js
,我在视图中格式化了一些文本。
但是我的格式化程序被调用了3次:
-
当我将模型绑定到面板控件时:
oPanel.setModel(oModel,"data");
sBirthday
和sFormat
均为undefined
。 -
onInit()
完成并呈现视图之后:sBirthday
已正确定价,sFormat
是undefined
-
再次:
sBirthday
和sFormat
均正确地得到了估价。
为什么会这样?正确吗?
该应用出现错误,因为格式化程序中的ageDescription()
无法管理undefined
的值。
formatter.js
sap.ui.define([],function () {
"use strict";
return {
ageDescription : function (sBirthday,sFormat) {
do.something();
var sFromMyBd = moment(sBirthday,sFormat).fromNow();
do.something();
return sAge;
}
}
});
main.view.xml
<mvc:View
controllerName="controller.main"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Panel id="user-panel-id">
<Input id="name-input-id" enabled="false" value="{data>/user/name}" />
<Label text="{i18n>age}: " class="sapUiSmallMargin"/>
<Label text="{
parts: [
{path: 'data>/user/birthday'},{path: 'data>/user/dateFormat'}
],formatter: '.formatter.ageDescription' }"/>
</Panel>
</mvc:View>
Main.controller.js
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();
},});
});
data.json
{
"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"
}
}
}