使用在SAPUI5中的XML视图的js控制器中生成的Dialog提交表单

时间:2016-12-19 06:09:30

标签: sapui5

我将在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我无法触及控件以及更改文本。

任何建议,

最诚挚的问候,

1 个答案:

答案 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");