簡體   English   中英

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) 未定義。
有誰知道這個問題的解決方案?

謝謝。

您可以在私有范圍內定義輔助函數。

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 視圖。

this.formatter.roundNumberToTwoDecimals(dNumber);

工作正常(這是視圖的控制器)

試試 this.roundNumberToTwoDecimals(dNumber)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM