Data binding SimpleForm上的SAPUI5数据绑定
我在尝试将数据绑定到简单表单时遇到问题。我正在使用模拟服务器,并已成功地将数据绑定到列表/表 我的manifest.json如下所示Data binding SimpleForm上的SAPUI5数据绑定,data-binding,odata,sapui5,sap-fiori,Data Binding,Odata,Sapui5,Sap Fiori,我在尝试将数据绑定到简单表单时遇到问题。我正在使用模拟服务器,并已成功地将数据绑定到列表/表 我的manifest.json如下所示 "mock": { "dataSource": "mainService" } [{ "ID_PassNum": "cu001", "Title": "Mr", "Name": "Don", "Surname": "Ownery", "ResType": "SA", "Country": "South Af
"mock": {
"dataSource": "mainService"
}
[{
"ID_PassNum": "cu001",
"Title": "Mr",
"Name": "Don",
"Surname": "Ownery",
"ResType": "SA",
"Country": "South Africa"
}]
<Label text="Name" />
<Input value="{mock>/UserDetailsSet/0/Name}" />
<Label text="Surname" />
<Input value="{mock>/UserDetailsSet/0/Surname}"/>
我的mockdata(UserDetailsSet.json)如下所示
"mock": {
"dataSource": "mainService"
}
[{
"ID_PassNum": "cu001",
"Title": "Mr",
"Name": "Don",
"Surname": "Ownery",
"ResType": "SA",
"Country": "South Africa"
}]
<Label text="Name" />
<Input value="{mock>/UserDetailsSet/0/Name}" />
<Label text="Surname" />
<Input value="{mock>/UserDetailsSet/0/Surname}"/>
我的SimpleForm字段如下所示
"mock": {
"dataSource": "mainService"
}
[{
"ID_PassNum": "cu001",
"Title": "Mr",
"Name": "Don",
"Surname": "Ownery",
"ResType": "SA",
"Country": "South Africa"
}]
<Label text="Name" />
<Input value="{mock>/UserDetailsSet/0/Name}" />
<Label text="Surname" />
<Input value="{mock>/UserDetailsSet/0/Surname}"/>
我遗漏了什么?绑定应该是这样的
<Label text="Name" />
<Input value="{mock>Name}" />
<Label text="Surname" />
<Input value="{mock>Surname}"/>
如果模拟中只有一个对象。如果不工作,请将控制器代码放在您将模型设置到视图的位置您似乎正在使用
ODataModel
。在ODataModels中,针对集合/聚合的绑定不像使用JSONModel那么容易。您不能使用集合/索引/属性
语法访问/绑定属性
ODataModels如何存储数据
如果加载类似于UserDetailSet
的实体集,存储在ODataModel中的数据如下所示:
{
UserDetailSet('00001'): { ... },
UserDetailSet('00002'): { ... },
UserDetailSet('00003'): { ... },
UserDetailSet('00004'): { ... }
}
<Label text="Name" />
<Input value="{mock>/UserDetailSet('00001')/Name}" />
<Label text="Surname" />
<Input value="{mock>/UserDetailSet('00001')/Surname}"/>
而“00001”等是实体键。如果在UserDetailSet
上创建聚合绑定,ODataListBinding将处理将上述数据转换为每个项目的上下文的操作
ODataModel上的属性绑定
您的绑定必须如下所示:
{
UserDetailSet('00001'): { ... },
UserDetailSet('00002'): { ... },
UserDetailSet('00003'): { ... },
UserDetailSet('00004'): { ... }
}
<Label text="Name" />
<Input value="{mock>/UserDetailSet('00001')/Name}" />
<Label text="Surname" />
<Input value="{mock>/UserDetailSet('00001')/Surname}"/>
并在SimpleForm本身上动态使用bindElement
:
this.getView().byId("MyForm").bindElement({
path: "/UserDetailSet('"+ sUserID +"')",
model: "MyOdataModelID",
// use OData parameters here if needed
parameters: {
"expand": "UserAdress"
},
// react on binding events here
events: {
change: function (oEv) { },
dataRequested: function (oEv) { },
dataReceived: function (oEv) {}
}
});
溴
克里斯你好,谢谢你的帮助。我试过你有约束力的建议,但没用。“将控制器代码放在将模型设置到视图的位置”的确切含义是什么。这就是你的意思还是怎么做的?:onInit:function{//View Controller this.getView.setModel('mock'))..谢谢好的,然后模拟模型有列表..然后更改为模拟>/0/name谢谢。已经尝试过了,但它不起作用。谢谢你的帮助。谢谢你的帮助。仍然不起作用,但感谢你的教育性回应。RegardsHi除了最初的帖子之外,我还有以下清单“数据源”:{“mainService”:{“uri”:“/here/goes/your/serviceUrl/”,“type”:“OData”,“settings”:{“annotations”:[],“odataVersion”:“2.0”,“localUri”:“localService/metadata.xml”“以及我的表单字段下面的一个列表,该列表实际显示基于模拟服务器的数据。我的视图控制器的init事件中没有代码。我尝试过这样的代码。getView().byId(“MyForm”).bindElement({path:”/UserDetailSet('00001'),model:“mock”})”关于所需UserDetail实体的密钥是否为“00001”?这只是我举的一个例子。如果您的密钥类型为integer,则为“/UserDetailSet(1)”或多属性密钥,例如“/UserDetailSet(ShopID='NY',UserID=1)”,感谢您与我一起旅行。