控制器方法中的本地JSON文件和数据

时间:2016-05-27 10:21:17

标签: javascript arrays json sapui5

这是我在控制器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,如上所述。

1 个答案:

答案 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>