Quantcast
Channel: SCN: Message List - SAPUI5 Developer Center
Viewing all articles
Browse latest Browse all 8124

Add new entry to local model

$
0
0

Hello everyone,

 

I have a local model, like this one:

 

{

     "partners" : [

          {

               "name" : "Coca Cola",

               "icon" : "/img/cocacola.png",

               "people" : [

                    {

                         "name" : "Jonh",

                         "surname" : "Wayne",

                         "role" : "Developer"

                    },

                    {

                         "name" : "Matt",

                         "surname" : "Damon",

                         "role" : "Manager"

                    },

                    {

                         "name" : "Super",

                         "surname" : "Man",

                         "role" : "Hero"

                    },

                    ... //other workers

               ]

          },

          ... //other partners

     ]

}

 

I have created a view that shows the partner's people list. The view sees and listens to a subportion of the model, at this path:

 

/partners/n/people

where n is the nth partner selected. Long story short, using data binding through 2 views, I display the list of partners, then when the user clicks on a partner I show the list of peoples of that partner (path /partners/n/people), and then when the user clicks on a person, I show the person details (path /partners/n/people/n).

 

What I want to do now is create a view to add a new person to a partner's people list. On the "people's view" I added a popup that the user can use to input all the data needed to create the new person:

 

When the user clicks on the save button, I collect all the user inputs and create an object like this:

 

...

var name = sap.ui.getCore().byId("inputName").getValue();

var surname= sap.ui.getCore().byId("inputSurname").getValue();

var role= sap.ui.getCore().byId("inputRole").getValue();


var newPerson = {

    name : name,

    surname : surname,

    role : role

}

 

How can I now save this new object inside the right partner's people array? I did something like this in the past, but with a 1 level array, like this:

 

...

var newCustomer = {name : name, surname : surname, city : city, ...}

var oModel = sap.ui.getCore().getModel();     //--- get the model

var oData = oModel.getData();     //--- get the model odata

var oDelta = {customers : []};     //--- create a delta obj

oDelta.customers[oData.customers.length] = newCustomer;     //--- add the newCustomer @nth position

oModel.setData(oDelta, true);     //--- add new data!   

 

How can I place my newPerson in the right place? Do I have to keep track of the current partner, and then loop through all the partners to find the matching one, and then append the newPerson to the people array?

 

 

 

I hope I was clear enough, thanks in advance


Viewing all articles
Browse latest Browse all 8124

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>