我在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
函数中的
另一个工作样本:http://plnkr.co/edit/ahS6NlUHHL0kdvdddvgd?p=preview 参考:https://sapui5.hana.ondemand.com/#/sample/sap.m.sample.InputChecked/preview
答案 0 :(得分:1)
也许您可以将trimString
函数放在var Utils
对象之外,并将其设置为全局函数。
以下是示例:http://plnkr.co/edit/u64DEP0RnT5CJADZyXJg?p=catalogue
修改强>
由@boghyon更正,trimString
函数应该是闭包中的函数,而不是全局函数:)
答案 1 :(得分:0)
在这种情况下,this
关键字包含调用函数的对象:调用controller
mandatoryValueType
的{{1}}。
在utils.js
和utils.js
的较高范围内mandatoryValueType
初始化。然后在var that = this
内部而不是mandatoryValueType
使用this.trimString
。
修改强>
对象的self reference to a property of an object in a literal declaration:
that.trimString