我将在SAPUI5应用程序中通过oData服务创建一个简单的表单来创建新条目。我的方法是制作如下对话:
<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core">
<Dialog id="CreateDialog" title="Add New Employee">
<content>
<Button id="bt" text="s"></Button>
<sap.ui.layout.form:Form editable="true" xmlns:sap.ui.layout.form="sap.ui.layout.form" id="__form4">
<sap.ui.layout.form:formContainers>
<sap.ui.layout.form:FormContainer title="Title" id="__container4">
<sap.ui.layout.form:formElements>
<sap.ui.layout.form:FormElement label="Employee ID" id="__element5">
<sap.ui.layout.form:fields>
<Input width="100%" id="txtEmpid" placeholder="Emp ID"/>
</sap.ui.layout.form:fields>
</sap.ui.layout.form:FormElement>
</sap.ui.layout.form:formElements>
</sap.ui.layout.form:FormContainer>
</sap.ui.layout.form:formContainers>
<sap.ui.layout.form:layout>
<sap.ui.layout.form:ResponsiveGridLayout id="__layout3"/>
</sap.ui.layout.form:layout>
</sap.ui.layout.form:Form>
<Button id="_btnSubmit" text="Submit" press="submitDialog"/>
</content>
</Dialog>
我创建了一个简单的表单,其中包含一个给定id="bt"
输入文本的按钮id ="txtEmpid"
。我的问题是我无法在我的控制器中达到此ID。这就是我尝试的方法:我添加了一个按钮,给出press=submitDialog
并在我创建整个视图的控制器中实现方法(通过id获取控件并简单地更改文本)。
sap.ui.define(["sap/ui/core/mvc/Controller"], function(Controller) {
"use strict";
return Controller.extend("Demo1.controller.InitView", {
showCreateDialog: function() {
var view = this.getView();
var createDialog = view.byId("CreateDialog");
var oDummyController = {
// This is when I clicked the Submit button in dialog
submitDialog: function() {
var button = this.getView().byId("bt");
var inputText = this.getView().byId("txtEmpid");
// I tried to test if I reached these controls by byId method
button.setText("ssss");
inputText.setValue("zzz");
},
closeDialog: function() {
createDialog.close();
}
};
// This is when the dialog event is fired, things are fine here
if (!createDialog) {
createDialog = sap.ui.xmlfragment(view.getId(), "Demo1.view.CreateDialog", oDummyController);
}
view.addDependent(createDialog);
createDialog.open();
if (!createDialog.isOpen()) {
//do sth
}
}
});
});
我试着看看happern是什么,这是Error我无法触及控件以及更改文本。
任何建议,
最诚挚的问候,
答案 0 :(得分:0)
您已经在代码中解决了这个问题。你无法看到它。
在你的&#34; submitDialog&#34;,&#34;这个&#34;不是指你期待的东西。如果您使用view.byId()进行此操作 - 您已经定义了 - 它可能会起作用。因为,虽然你正在定义&#34;查看&#34;变量,你得到正确的&#34;这个&#34;同时参考。通常不建议这样做。我们大多数人这样做:
var that = this;
并像
一样使用它showCreateDialog: function() {
var that = this;
var oDummyController = {
submitDialog: function() {
var button = that.getView().byId("bt");