Я создал пользовательское расширение для sap.m.Input. В onAfterRendering я хочу, чтобы замаскировать значение с помощью использования jquery-maskmoney следующим образом:Extend sap.m.Input: onAfterRendering метод не работает
$('#'+this.getId()+'-inner').maskMoney({ thousands : '', decimal : '.' });'
Когда я Нанести маску на консоли, все работает отлично. Но когда я пытаюсь добавить его в методе onAfterRendering, я получаю некоторые ошибки, когда я пытаюсь SetValue:
amountInputControl.setValue(data.amount); // Its is an instance of NumericInput
Ошибка:
TypeError: Cannot read property 'val' of undefined
at sap.m.InputBase._getInputValue (InputBase.js:9)
at sap.m.InputBase.updateDomValue (InputBase.js:32)
at sap.m.InputBase.setValue (InputBase.js:34)
at sap.ui.controller.updateFieldsForReference //Here was executed operation setValue
NumericInput.js
jQuery.sap.declare("control.customInputTypes.NumericInput");
sap.ui.define(['jquery.sap.global', 'sap/m/Input'],
function(jQuery, BaseInput) {
"use strict";
var commonControlInput = BaseInput.extend('control.customInputTypes.NumericInput', /** @lends sap.m.Input.prototype */ {
metadata: {},
renderer : {
render : function(oRm, oControl) {
sap.m.InputRenderer.render(oRm, oControl);
}
}
});
commonControlInput.prototype.onAfterRendering = function() {
$('#'+this.getId()+'-inner').maskMoney({ thousands : '', decimal : '.' });
};
return commonControlInput;
}, /* bExport= */ true);
Я даже не касался класса InputBase, поэтому мне интересно, что случилось? Если я не применяю эту маску, все работает нормально. Может быть, я не могу использовать jQuery в методе onAfterRendering элемента управления?
Можете ли вы упомянуть версию SAPUI5 и версию jQuery-maskmoney? Я попробовал ваш код и не сталкивался с какой-либо проблемой. –