层次结构JSON模型和UI5

时间:2016-05-31 01:35:12

标签: sapui5

我正在创建一个包含JSON数据和UI5的演示应用程序。这个想法(简而言之)是为所选项目提供各种信息视图。我正在使用IconTabBar控件。我创建了一个示例场景,因此(希望)我可以更清楚地解释问题。

1. IconTabBar's第一个标签包含员工列表,用户可以通过选择左侧的单选按钮选择一个

2.这会将用户带到显示say,sales view的下一个标签。用户可以单击任何选项卡并移动到相应的视图。

3.用户可以在任何视图中修改信息。如果用户忘记或忽略保存数据,则选项卡颜色设置为红色。

4.用户可以保存数据。

5.有些观点的主要细节格式有信息。

我面临的问题是: -

1.如何根据表格中选择的项目过滤模型数据?

2.如何更新过滤后的数据并重新设置回模型?

3.我也想知道数据是否结构正确

我在选择公司后使用以下代码更新绑定路径。 GREP函数未返回提案的正确值。它只返回1个E001提案,而它应该返回2.它对订单也没有正常工作。我不确定数据是否结构正确。

var oModel_Data  = oJSONDataModel.getData();

  var oView_Data = oViewDataModel.getData();



  var aModelData  = oModel_Data[sSelected_Key];

  var aViewData = oView_Data[sSelected_Key];



  aViewData = jQuery.grep(aModelData, function(data, index) {

   return data.id === sSelected_id

  })[0];



  oView_Data[sSelected_Key]=aViewData;

  oViewDataModel.setData(oView_Data);

  oViewDataModel.refresh(true);

我正在使用以下代码来检查用户是否更改了数据。

var oView_Data = oViewDataModel.getData();

  var oModel_Data  = oJSONDataModel.getData();



  var aViewData = oView_Data[in_sKey];

  var aModelData = oModel_Data[in_sKey];



  aModelData.forEach(function(item, index, array) {

   var valueView = aViewData;

   if (item.id === sSelected_id){

    //The code here need to consider complex(nested) data types

    //Thus it should check type of not only valueView and item

    //but also their each and every child elements

    /*---------Temporary Solution---------------------*/

    var sViewValue = JSON.stringify(valueView);

    var sItem = JSON.stringify(item);

    var bSameData = sViewValue === sItem;



    if (bSameData==true){

     flag_data_changed=false;

    }else{

     return flag_data_changed=true;

    }

   }

     });

我的json模型如下。

{

  "employees": [

          {"id":"E0001"  ,

           "name":"Alec Stewert"

          },



          {"id":"E0002"  ,

           "name":"Debra Manning"

          }

  ],



  "sales": [

          {"id":"E0001"  ,

           "sale_q1":"10000",

           "sale_q2":"3000",

           "sale_q3":"8000",

           "sale_q4":"2000"

          },



          {"id":"E0002"  ,

           "sale_q1":"8000",

           "sale_q2":"3000",

           "sale_q3":"7000",

           "sale_q4":"5000"

          }

  ],



  "proposal":[



           {"id":"E0001",

             "fi_q":"Q2",

             "value":"12000",

             "customer":"6000"

            },



            {  "id":"E0001",

               "fi_q":"Q2",

               "value":"8000",

               "customer":"2300"

            }

  ],



  "key_orders": [

      {"id":"E0001",

      "order_hdr":   

        [

          {"id":"O0001",

           "fi_q":"Q1",

           "value":"2000",

           "customer":"2000"

          },



          {"id":"O0002",

           "fi_q":"Q1",

           "value":"2000",

           "customer":"2000"

          }

        ],

        "order_dtl":[

            {

            "id":"O0001",

            "itm":"Item X",

            "Qty":"100",

            "rate":"20"

            } 

        ]

      },



      {"id":"E0002",

      "order_hdr":   

        [

          {"id":"O0011",

           "fi_q":"Q1",

           "value":"2000",

           "customer":"5000"

          },



          {"id":"O0012",

           "fi_q":"Q1",

           "value":"1000",

           "customer":"5000"

          }

        ],

        "order_dtl":[

            {

            "id":"O00011",

            "itm":"Item Z",

            "Qty":"200",

            "rate":"10"

            } 

        ]

      }   

  ]

}

我已在线调查并在SAP帮助中进行了调查,但未能了解需要完成的工作。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

  

1.如何根据表格中选择的项目过滤模型数据?

如果您准备了JSONModel,则可以使用Filter

  

2.如何更新过滤后的数据并重新设置回模型?

如果将表绑定到JSONModel,则默认情况下JSNOModel是双向绑定,因此任何已编辑的数据都将位于JSONModel中

  

3.我也想知道数据是否结构正确

浏览Table的示例,这样您就可以了解模型和绑定模型到表