0
votes

I am new to SAPUI5 and I am very much in need of your help.

I have created an XML view and bound an OData model to it like below. Now all the controls in the view got bound and I am able to see the data.

this.getView().setModel(oModel);

Now I have a requirement in which I have to completely remove this binding from the view. I destroyed the oModel and removed all its bindings. And now when I refresh the view, the data still exists in the screen. I want all the data from the view to disappear.

oModel.destroy();
oModel.refresh();
this.getView().getModel().refresh(true);
2
one any event such as button Press event try to set all field as empty.Abul

2 Answers

1
votes

I assume that you're using an sap.ui.model.odata.ODataModel to retrieve odata, then done binding using, for example, a JSON model, like so,

var oJson = new sap.ui.model.json.JSONModel({data : oData);

/* Here 'data' is any name that you provide to identify your data model, 'oData' is the data that is received as response from the sap.ui.model.odata.ODataModel */

And set this model to the view like you have mentioned,

this.getView().setModel();

Now, to remove this data from the view you can try the following,

oJson.setData({data : null}, true);

This would set the previously set oData to null and therefore all data binding from the controls in the view would be removed(changed to null). I believe oJson.refresh() is optional, but you can try adding that as well if the change is not reflected.

Its an approach until may be you find something better :) Here is the documentation for the APIs that I've used.

1
votes

If you are using

var dataModel = new sap.ui.model.json.JSONModel();
dataModel.setData(oDataResponse); //Data returned from oData.Read()
this.getView().setModel(dataModel, "dataModel");

Retrieve the model, Set the model to null, Update the binding

var dataModel = this.getView().getModel("dataModel"); 
if(dataModel){
    dataModel.setData(null);
    dataModel.updateBindings(true);
}