SAP UI5 Json模型计数

时间:2014-05-09 13:12:40

标签: javascript jquery json count sapui5

我有以下问题。抱歉我的英语不好。

我想读取一个json文件并计算其中的人数。 这个结果我将写入一个变量。这个变量连接到TileContainer。因此,当我在我的Json文件中写一个新条目时,我希望TileContainer编号增加到。

这是我的Company.json文件中的代码:

{
                    "mitarbeiter":  [        

                    {   "Lastname": "Mustermann",
                        "Firstname": "Max",
                        "icon": "sap-icon://globe",
                        "adress": "Essen",
                        "geschlecht": "männlich",
                        "plz": "42222",
                        "street": "Viehoferplatz 11",
                        "jobinfo": "Softwareentwickler"
                    },
                    {   "Lastname": "Fischer",
                        "Firstname": "Elke",
                        "icon": "sap-icon://globe",
                        "adress": "Hamburg",
                        "geschlecht": "weiblich",
                        "plz": "31441",
                        "street": "Am Fischmarkt 12",
                        "jobinfo": "Verwaltungsassistentin"
                    },
                    {   "Lastname": "Mustermann",
                        "Firstname": "Heike",
                        "icon": "sap-icon://globe",
                        "adress": "Essen",
                        "geschlecht": "weiblich",
                        "plz": "42222",
                        "street": "Viehoferplatz 11",
                        "jobinfo": "Vorstandsvorsitzende"
                    }

                    ]

}

在我的controller.js上

onInit: function() {

         this.getView().addDelegate({onBeforeShow: function(evt) {   
         if (this.direction != "back") {
             var model = new sap.ui.model.json.JSONModel();
             model.loadData("JsonModels/Company.json");
             alert(model.getJSON());
             var XYZ;

             var jsonModel =  
                            {
                              "Tiles":[
                                {"Tile":
                                {   id : "idModelTile1",
                                    title : "Mitarbeiter",
                                    info: "Mitarbeiterdaten",
                                    icon:"sap-icon://company-view",
                                    activeIcon:"inbox",
                                    number: XYZ,
                                    appto: "idListPage"
                                    //numberUnit: "positions"
                                    },  
                                }, ......

我希望变量XYZ获取长度值,然后渲染TileContainer。因此,在选择屏幕视图中给出了公司雇员数量。

希望有人可以帮助我。我用jquery做了一些实现,但是没有什么能正常工作。

尊敬的, 基督教

2 个答案:

答案 0 :(得分:0)

由于可以读取数组的length属性,因此只需使用

即可
var XYZ = model.getProperty("/mitarbeiter/length");

编辑:这是我在下面给出的评论的代码示例

onInit: function() {
    jQuery.ajax({
        url: "JsonModels/Company.json",
        dataType: "json",
        success: function(data, textStatus, jqXHR) { 
            var mitarbeiterCount = data.length;
            var oTileModel = new sap.ui.model.json.JSONModel();
            oTileModel.setData({
                tiles :[{
                    tile : {   
                        id        : "idModelTile1",
                        title     : "Mitarbeiter",
                        info      : "Mitarbeiterdaten",
                        icon      :"sap-icon://company-view",
                        activeIcon:"inbox",
                        number    : mitarbeiterCount,
                        appto     : "idListPage"
                    },  
                }]
            });
            sap.ui.getCore().setModel(oTileModel);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert("Oh no, an error occurred");
        }
    });
}

在您看来,如果您现在绑定了tile的number属性,它应该自动运行:

var oTileTemplate = new sap.m.StandardTile({
    icon      : "{icon}",
    number    : "{number}",
    numberUnit: "mitarbeiter",
    title     : "{title}",
    info      : "{info}"
});

var oTileContainer = new sap.m.TileContainer().bindAggregation("tiles", "/", oTileTemplate);

//Etc...

答案 1 :(得分:0)

当我添加

 alert(model.getProperty("/mitarbeiter/length"));

我收到警告信息“未定义”......