我目前正試圖擴展sap.m.Input
字段以便能夠設置樣式和擴展標籤位置。 渲染工作正常,但不知何故數據綁定在過程中丟失,我不確定這是爲什麼。這是我的控制:自定義控件 - 數據綁定不起作用
sap.ui.define([
'sap/m/Input',
], function(Input) {
'use strict';
return Input.extend('one.sj.control.BhTextInput', {
metadata: {
properties: {
label: {
type: 'string',
},
},
aggregations: {
icon: {
type: 'sap.ui.core.Icon',
multiple: false,
visibility: 'public',
},
},
},
renderer: function(oRM, oControl) {
oRM.write('<div class="formControl">');
oRM.write('<input placeholder="'+oControl.getPlaceholder()+'"');
oRM.write('type="'+oControl.getType()+'"');
oRM.write('value="'+oControl.getValue()+'"');
oRM.writeClasses();
oRM.writeControlData(oControl);
oRM.write('/>');
oRM.write('<label class="inputLabel" for="'+oControl.getId()+'"');
oRM.write('>');
oRM.renderControl(oControl.getIcon());
oRM.write('<span class="inputLabelContent">');
oRM.write(oControl.getLabel());
oRM.write('</span>');
oRM.write('</label>');
oRM.write('</div>');
},
});
});
正如你可以看到它很簡單。 這是我如何使用它:
<sj:BhTextInput
id="username" class="input textInput"
placeholder="{i18n>HINT_USERNAME}" value="{creds>/username}"
type="Text">
<sj:icon>
<core:Icon src="sap-icon://email" class="inputIcon" />
</sj:icon>
</sj:BhTextInput>
我確認是不是我的模型的一個問題,因爲它工作正常,當我更換上面的手動<input/>
建設中renderer
法:
sap.m.InputRenderer.render(oRM, oControl);
你能發現任何錯誤嗎?謝謝!
編輯:澄清一下我的意思是「數據綁定丟失」。當我訪問像我這樣的控制器內的輸入字段的值時,我只會得到一個空字符串:getModel('creds').getProperty('/username');
。這在替換上述手動結構時可以工作。
謝謝。我不知道writeAttribute。可悲的是這並沒有改變任何東西。我目前的解決方案只是使用InputRenderer。我相信因爲Input並不是實際呈現的,所以輸入的onAfterRendering也不會被調用,這可能是某些綁定發生。 – puelo
也許你可以分享你生成的HTML標籤? – amiramw