Javascript SAPUI5在格式化程序中使用格式化程序

Javascript SAPUI5在格式化程序中使用格式化程序,javascript,sapui5,string-formatting,Javascript,Sapui5,String Formatting,我正在尝试从另一个格式化程序方法访问格式化程序方法,如下所示: sap.ui.define(["<package>/model/formatter"], function(formatter) { "use strict"; return { formatter: formatter, roundNumberToTwoDecimals: function(number) { if (number) { return numb

我正在尝试从另一个格式化程序方法访问格式化程序方法,如下所示:

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]);
        }
    }
};
sap.ui.define([“/model/formatter]”,函数(格式化程序){
“严格使用”;
返回{
格式化程序:格式化程序,
roundNumberToTwoDecimals:函数(数字){
如果(数字){
返回编号。toFixed(2);
}
},
stringFormatter:函数(sI18n、DNNumber、SPProduct){
var i18n=this.getModel(“i18n”);
if(i18n){
返回i18n.getText(sI18n,[formatter.roundNumberToTwoDecimals(dNumber),sProduct]);
}
}
};
但是,我的格式化程序(formatter.roundNumberToTwoDecimals)未定义。
有人知道这个问题的解决办法吗


谢谢。

试试这个。roundNumberToTwoDecimals(dNumber)

试试这个。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]);
        }
    }
};
sap.ui.define([“/model/formatter]”,function(){
“严格使用”;
//私人范围
var roundToDecimal=函数(iNumber,ifix){
返回iNumber.toFixed(如果已固定);
}
返回{
roundNumberToTwoDecimals:函数(数字){
如果(数字){
返回roundToDecimal(数字,2);
}
},
stringFormatter:函数(sI18n、DNNumber、SPProduct){
var i18n=this.getModel(“i18n”);
if(i18n){
返回i18n.getText(sI18n,[roundToDecimal(dNumber,2),sProduct]);
}
}
};

函数roundToDecimal只能由格式化程序中的函数访问。它不能从视图中作为格式化程序函数直接访问,因为它不应该作为格式化程序函数公开,而只是一个辅助函数。通过这种方式,传递给格式化程序的“this”的上下文在从jsview更改为jsview时并不重要xml视图。

您可以在私有范围内定义帮助函数

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]);
        }
    }
};
sap.ui.define([“/model/formatter]”,function(){
“严格使用”;
//私人范围
var roundToDecimal=函数(iNumber,ifix){
返回iNumber.toFixed(如果已固定);
}
返回{
roundNumberToTwoDecimals:函数(数字){
如果(数字){
返回roundToDecimal(数字,2);
}
},
stringFormatter:函数(sI18n、DNNumber、SPProduct){
var i18n=this.getModel(“i18n”);
if(i18n){
返回i18n.getText(sI18n,[roundToDecimal(dNumber,2),sProduct]);
}
}
};

函数roundToDecimal只能由格式化程序中的函数访问。它不能从视图中作为格式化程序函数直接访问,因为它不应该作为格式化程序函数公开,而只是一个辅助函数。通过这种方式,传递给格式化程序的“this”的上下文在从jsview更改为jsview时并不重要xml视图。

通过它,您可以获得xml视图的控制器通过它,您可以获得xml视图的控制器