如何在UI5自定义控件/类型中访问其他功能?

时间:2017-12-13 02:24:59

标签: sapui5

我在Utils.js中定义了许多自定义类型:http://plnkr.co/edit/BGqDoWEC7DTmomEFHygd?p=catalogue

我想在trim()

中添加parseValue
parseValue: function (oValue) {
    if(oValue !== null) {
        return oValue.trim();
    }
    return oValue;
},

复制并粘贴这个功能有点笨,所以我想做某事。喜欢:

trimString : function(oValue) {
    if(oValue !== null) {
        return oValue.trim();
    }
    return oValue;
},

mandatoryValueType : SimpleType.extend("text", {
    formatValue: function (oValue) {
        return oValue;
    },
    parseValue: this.trimString,
    validateValue: function (oValue) {
        if (!oValue) {
            throw new ValidateException(Utils.i18n("MANDATORY_VALIDATE_ERROR"));
        }  
    }
}),

mandatoryValueType中的范围似乎无法访问this.trimString,我该怎么办?

this函数中的

parseValue范围,没有trimString函数: enter image description here

另一个工作样本:http://plnkr.co/edit/ahS6NlUHHL0kdvdddvgd?p=preview 参考:https://sapui5.hana.ondemand.com/#/sample/sap.m.sample.InputChecked/preview

2 个答案:

答案 0 :(得分:1)

也许您可以将trimString函数放在var Utils对象之外,并将其设置为全局函数。

以下是示例:http://plnkr.co/edit/u64DEP0RnT5CJADZyXJg?p=catalogue

修改

由@boghyon更正,trimString函数应该是闭包中的函数,而不是全局函数:)

答案 1 :(得分:0)

在这种情况下,this关键字包含调用函数的对象:调用controller mandatoryValueType的{​​{1}}。

utils.jsutils.js的较高范围内mandatoryValueType初始化。然后在var that = this内部而不是mandatoryValueType使用this.trimString

修改

对象的

self reference to a property of an object in a literal declaration

that.trimString