SAPUI5在formatter中使用formatter

时间:2015-10-22 07:30:09

标签: javascript string-formatting sap sapui5

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

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)未定义 有谁知道解决这个问题?

感谢。

3 个答案:

答案 0 :(得分:2)

this.formatter.roundNumberToTwoDecimals(dNumber);

工作正常(这是视图的控制器)

答案 1 :(得分:2)

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

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只能由格式化程序中的函数访问。它不能直接作为格式化程序函数从视图中访问,因为它不应该作为格式化程序函数公开,而只是作为辅助函数公开。通过这种方式,这个&#39;的背景。传递给格式化器并不重要,因为它从jsview变为xml视图。

答案 2 :(得分:0)

尝试this.roundNumberToTwoDecimals(dNumber)