SAPUI5 在格式化程序中使用格式化程序
SAPUI5 Use formatter inside formatter
我正在尝试从另一个格式化程序方法访问一个格式化程序方法,如下所示:
sap.ui.define(["<package>/model/formatter"], function(formatter) {
"use strict";
return {
formatter: formatter,
roundNumberToTwoDecimals: function(number) {
if (number) {
return number.toFixed(2);
}
},
stringFormatter: function(sI18n, dNumber, sProduct) {
var i18n = this.getModel("i18n");
if (i18n) {
return i18n.getText(sI18n, [formatter.roundNumberToTwoDecimals(dNumber), sProduct]);
}
}
};
但是,我的格式化程序 (formatter.roundNumberToTwoDecimals) 未定义。
有谁知道解决这个问题的方法吗?
谢谢。
尝试this.roundNumberToTwoDecimals(dNumber)
this.formatter.roundNumberToTwoDecimals(dNumber);
工作正常(这是视图的控制器)
您可以在私有范围内定义辅助函数。
sap.ui.define(["<package>/model/formatter"], function() {
"use strict";
//private scope
var roundToDecimal = function(iNumber,iFixed){
return iNumber.toFixed(iFixed);
}
return {
roundNumberToTwoDecimals: function(number) {
if (number) {
return roundToDecimal(number,2);
}
},
stringFormatter: function(sI18n, dNumber, sProduct) {
var i18n = this.getModel("i18n");
if (i18n) {
return i18n.getText(sI18n, [roundToDecimal(dNumber,2), sProduct]);
}
}
};
roundToDecimal 函数只能由格式化程序中的函数访问。它不能作为格式化程序函数从视图中直接访问,因为它不应该作为格式化程序函数公开,而只是辅助函数。通过这种方式,传递给格式化程序的 'this' 的上下文并不重要,因为它从 jsview 更改为 xml 视图。
我正在尝试从另一个格式化程序方法访问一个格式化程序方法,如下所示:
sap.ui.define(["<package>/model/formatter"], function(formatter) {
"use strict";
return {
formatter: formatter,
roundNumberToTwoDecimals: function(number) {
if (number) {
return number.toFixed(2);
}
},
stringFormatter: function(sI18n, dNumber, sProduct) {
var i18n = this.getModel("i18n");
if (i18n) {
return i18n.getText(sI18n, [formatter.roundNumberToTwoDecimals(dNumber), sProduct]);
}
}
};
但是,我的格式化程序 (formatter.roundNumberToTwoDecimals) 未定义。
有谁知道解决这个问题的方法吗?
谢谢。
尝试this.roundNumberToTwoDecimals(dNumber)
this.formatter.roundNumberToTwoDecimals(dNumber);
工作正常(这是视图的控制器)
您可以在私有范围内定义辅助函数。
sap.ui.define(["<package>/model/formatter"], function() {
"use strict";
//private scope
var roundToDecimal = function(iNumber,iFixed){
return iNumber.toFixed(iFixed);
}
return {
roundNumberToTwoDecimals: function(number) {
if (number) {
return roundToDecimal(number,2);
}
},
stringFormatter: function(sI18n, dNumber, sProduct) {
var i18n = this.getModel("i18n");
if (i18n) {
return i18n.getText(sI18n, [roundToDecimal(dNumber,2), sProduct]);
}
}
};
roundToDecimal 函数只能由格式化程序中的函数访问。它不能作为格式化程序函数从视图中直接访问,因为它不应该作为格式化程序函数公开,而只是辅助函数。通过这种方式,传递给格式化程序的 'this' 的上下文并不重要,因为它从 jsview 更改为 xml 视图。