尽管在SAP HCM开发方面经验丰富,但我刚刚开始学习UI5(使用eclipse),所以如果我的问题有点基础,请提前道歉......
我正在尝试创建数据绑定(基于UI5 rockstar的示例) DJ亚当斯)但由于某种原因,没有结果。
在我的控制器中,我输入了以下代码(在onInit函数中)来创建数据并使其可用:
onInit: function() {
var cities = [ { id: "A1", name: "Kobe" },
{ id: "A2", name: "Hiroshoma" }
];
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(cities);
sap.ui.getCore().setModel(oModel);
},
在我看来,我尝试使用以下代码绑定数据:
</IconTabFilter>
<IconTabFilter
binding="{/cities/0}"
text="{name}"
icon="sap-icon://group"
design="Horizontal">
</IconTabFilter>
<IconTabFilter
binding="{/cities/1}"
text="{name} ({id})"
icon="sap-icon://group"
design="Horizontal">
</IconTabFilter>
</items>
</IconTabBar>
</content>
</Page>
</core:View>
在我的输出中,所有元素都正确显示,但是我没有得到我在模型中初始化的值。但是,我没有收到任何错误
我的问题: 1.你能提供一些帮助/指导,看看我在哪里犯了错误吗? 2.什么是检测数据绑定问题的最简单方法(调试器,其他提示)?
非常感谢您的指导,
汤姆
答案 0 :(得分:1)
错误确实存在于您的绑定中。 虽然您有一个变量'cities',但您的json上下文以'id'开头。 您可以更新您的json模式以使根元素'cities',或将其设置为您的模型声明:
.setModel({cities:oModel})
至于调试,我更喜欢标准的Google Chrome浏览器工具。它允许手表,断点和(小)实时代码更改
答案 1 :(得分:0)
请尝试使用模板,而不是绑定单个元素,您可以使用模板将数组绑定到单个元素。 例如:
<List
items="{/ProductCollection}"
headerText="Products">
<items>
<ObjectListItem
title="{Name}"
type="Active"
press="onListItemPress"
number="{Price}"
numberUnit="{CurrencyCode}">
<firstStatus>
<ObjectStatus
text="Overweight"
state="Error" />
</firstStatus>
<secondStatus>
<ObjectStatus
text="In Stock"
state="Success" />
</secondStatus>
<attributes>
<ObjectAttribute text="{WeightMeasure} {WeightUnit}" />
<ObjectAttribute text="{Width} x {Depth} x {Height} {DimUnit}" />
</attributes>
</ObjectListItem>
</items>
[实例:https://sapui5.hana.ondemand.com/sdk/explored.html#/sample/sap.m.sample.ObjectListItem/code]
如果您希望对数据进行更精细的控制,那么您可以使用键值对设置多个模型。
示例:
sap.ui.getCore().setModel("key",oModel);
并获取值:
sap.ui.getCore().getModel("key");
答案 2 :(得分:0)
您创建模型的方法并不安静。变量城市不是对象而是数组。您可以将数据设置为建模:
onInit: function() {
var cities ={ "cities": [{ "id": "A1", "name": "Kobe" },
{ "id": "A2", "name": "Hiroshoma" }
]}
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(cities);
sap.ui.getCore().setModel(oModel);
},
或者您可以设置属性:
var cities = [ { id: "A1", name: "Kobe" },
{ id: "A2", name: "Hiroshoma" }
];
var oModel = new sap.ui.model.json.JSONModel();
oModel.setProperty("/cities", cities);
sap.ui.getCore().setModel(oModel);
你还必须正确绑定你的xml。您可以按照SapUi5探索的列表项目模板或开发人员指南进行操作