这是我在控制器init
方法中的代码:
mycontroller = this
var data = [{
"No": "456980",
"Updates": [{
"Test": "abc"
}, {
"Test": "bca"
}, {
"Test": "dbd"
}]
}, {
"No": "456980",
"Updates": [{
"Test": "abc"
}, {
"Test": "bca"
}, {
"Test": "dbd"
}]
}, {
"No": "456980",
"Updates": [{
"Test": "abc"
}, {
"Test": "bca"
}, {
"Test": "dbd"
}]
}]
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(data);
//set this model to list control having custom list as aggregation
mycontroller.List1.setModel(oModel);
mycontroller.List1.bindAggregation("items", {
path: "/",
template: mycontroller.List1_template
});
var ListItems = P1Notificationcontroller.list1.getItems();
var ListLength = ListItems.length;
for (var i = 0; i < ListLength; i++) {
var control = "status_vbox-list1-" + i;
sap.ui.getCore().byId(control).bindAggregation("items", {
path: "Updates",
template: new sap.m.Text('', {
text: '{Update}'
})
});
}
查看声明创建内容
oController.List1 = new sap.m.List("List1", {
headerDesign: sap.m.ListHeaderDesign.Standard
});
oController.List1_template = new sap.m.CustomListItem("McustomlistItem", {
content: [
new sap.m.VBox('', {
items: [
new sap.m.Text('', {
text: "{No}"
})
new sap.m.VBox('status_vbox', {
items: []
})
]
}));
视图中的上述代码和控制器init
方法可以很好地完成自定义列表VBox
中的项目从数据中的更新数组聚合。
当相同的数据保存在本地json文件中时 通过使用这行代码
var jsonmodel = new sap.ui.model.json.JSONModel("mockData/local.json");
mycontroller.List1.setModel(jsonmodel)
VBox
的循环失败,因为我们无法循环对象。
当我的两个模型的console.log时,一个模型的OData属性显示为Array而其他为对象,因为对象循环没有发生
如何在本地json文件中维护相同的数据,以便将更新属性循环到自定义列表项中的VBox
,如上所述。
答案 0 :(得分:1)
通过调用jquery ajax调用来解决问题,以填充本地json模型,如下所示
<select class="input-large" ng-model="vm.settings.selectedAdminId">
<option ng-repeat="admin in vm.admins | orderBy:'Username'" value="{{admin.Id}}">{{admin.Username}}</option>
</select>