在 Controller 中访问文本区域值

Access textarea value in Controller

我创建了一个自定义控件,它正在渲染一个文本区域(以及其他)。

如果单击按钮,我想访问文本框的当前值但不知道如何操作。 "this.byId("cb-input")" 仅在控制器中调用 returns 未定义。

自定义控件

....
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)
}

尝试去掉我们在创建自定义控件时设置的id,在实例化时给自定义控件设置和id,这样就可以通过Id获取自定义控件并获取值了。

      onInit: function( ){
 ...
 var oPage = this.getView().byId("cb");
 var oCustom = new CustomControl({
    id : "myControlId"
    messages: "{/data}"
 });
 oPage.addContent(oCustom)
}

同意 fareslt -.byId() 方法 return 控件在实例化期间直接分配了这些 ID。因此,如果事件及其方法定义正确,则使用 fareslt 示例 this.byId("myControlId").getValue() //or getter you have defined 应该 return 值。

其他选项是在自定义控件的聚合中定义按钮并将按下事件绑定到触发事件的主控件方法 - 因此从按钮单击您可以直接访问文本区域值。

此外,还有标准 TextArea control available in OpenUI5 SDK,因为您还没有解释为什么需要自定义控件 - 也许使用标准对您来说也是一个可行的选择?!

最好的, 香尼尔