我创建了一个自定义控件,用于渲染文本区域。
如果单击一个按钮,我想访问文本框的当前值,但不知道该怎么做。在Controller中调用的“ this.byId(” cb-input“)”仅返回未定义。
CustomControl
....
renderer: function ( oRM, oControl ){
...
oRM.write('<textarea id="cb-input"');
oRM.addClass("cb-input");
oRM.writeClasses();
oRM.write(">");
oRM.write("</textarea>");
...
}
控制器
onInit: function( ){
...
var oPage = this.getView().byId("cb");
var oCustom = new CustomControl({
messages: "{/data}"
});
oPage.addContent(oChat)
}
答案 0 :(得分:2)
同意fareslt-.byId()
方法返回控件,这些控件在实例化过程中直接分配了这些ID。因此,如果event及其方法定义正确,则使用fareslt示例this.byId("myControlId").getValue() //or getter you have defined
将返回该值。
其他选项是在自定义控件的聚合中定义按钮,并将press事件绑定到触发事件的主Control方法-因此,从按钮单击中,您可以直接访问textarea值。
此外,还有标准TextArea control available in OpenUI5 SDK,因为您还没有解释为什么需要自定义控件-也许使用标准对您来说也是可行的选择?
最好, Shanir
答案 1 :(得分:1)
尝试删除在创建自定义控件时设置的ID,并在实例化过程中将ID设置为自定义控件,这样您就可以通过id获得自定义控件并获取值。
onInit: function( ){
...
var oPage = this.getView().byId("cb");
var oCustom = new CustomControl({
id : "myControlId"
messages: "{/data}"
});
oPage.addContent(oCustom)
}