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 });
}
});
});
我创造了这个但是推送不是一个功能
答案 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);