我爲sap.m.Input創建了自定義擴展。在onAfterRendering我想用jquery-maskmoney使用如下掩蓋值:擴展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類,所以我不知道什麼是錯的?如果我不應用這個面具一切正常。 也許我不能在控件的onAfterRendering方法中使用jQuery?
你能提一下SAPUI5版本和jQuery-maskmoney版本嗎?我試過你的代碼,並沒有遇到任何問題。 –