如何在sapui5 onsubmitting按钮中将数据推送到单独的json模型文件夹中

时间:2016-07-15 09:42:55

标签: sapui5

View1.view.xml

<mvc:View controllerName="Register.controller.View1" xmlns:l="sap.ui.layout" xmlns:f="sap.ui.layout.form" xmlns:core="sap.ui.core" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m">
    <App>
        <pages>
            <Page title="{i18n>title}">
                <content>
                    <f:SimpleForm>
                        <f:content>
                            <Label text="FirstName" />
                            <Input value="" id="a1" width="50%" />
                            <Label text="LastName" />
                            <Input value="" id="a2" width="50%" />
                            <Label text="username" />
                            <Input value="" id="a3" width="50%" />
                            <Label text="Password" />
                            <Input value="" id="a4" width="50%" />
                        </f:content>
                    </f:SimpleForm>
                    <Button id="btn1" type="Accept" text="Submit" press="onPress" />
                </content>
            </Page>
        </pages>
    </App>
</mvc:View>

控制器

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/model/json/JSONModel"
], function(Controller, JSONModel) {
    "use strict";
    var sValue, data, oModel, selectedVal, textAreaVal;

    return Controller.extend("Register.controller.View1", {

        onPress: function() {
            //get the value of the selected item in the combobox
            selectedVal = this.getView().byId("a3").getValue();
            //get the textarea value
            textAreaVal = this.getView().byId("a4").getValue();

            var oModel = new JSONModel(jQuery.sap.getModulePath("Register", "model/model1.json"));
            this.getView().setModel(oModel);
            oModel.data.push({ selectedVal: selectedVal, textAreaVal: textAreaVal });
        }
    });
});

我创造了这个但是推送不是一个功能

1 个答案:

答案 0 :(得分:1)

您正在错误地设置数据。 data内没有oModel数组,它是一个对象(推送用于数组)

您应该使用模型的setData方法设置数据:

oModel.setData({ selectedVal: selectedVal, textAreaVal: textAreaVal });

更新回答

我知道您想更新模型中的数组。在这种情况下,首先从模型中检索数组,然后推送新对象,最后将更新后的数组存储回模型中:

var oModel = this.getView().getModel();
var aData = oModel.getProperty("/data");
aData.push({ selectedVal: selectedVal, textAreaVal: textAreaVal });
oModel.setProperty("/data", aData);

请参阅此工作示例:https://jsbin.com/kosaji/edit?html,output