在Controller中访问textarea值

时间:2019-07-02 12:46:23

标签: javascript sapui5 textarea

我创建了一个自定义控件,用于渲染文本区域。

如果单击一个按钮,我想访问文本框的当前值,但不知道该怎么做。在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)
}

2 个答案:

答案 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)
}