cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

JSON TwoWay Binding Anomaly when in Table.

MattHarding
SAP Mentor
SAP Mentor
0 Likes
1,279

I'm experiencing an issue when binding a JSON model to a table that has input enabled and TwoWay binding. To illustrate better, check out the example on JSBIN Example and within the output screen, drag each slider and notice the different behaviour.. The top slider works as expected, but the others get stuck as you drag it. When looking at it in more detail, it's like the whole item in the table is getting refreshed each time anything in that row changes.

Anyone seen this and/or have any ideas how to stop this happening while keeping TwoWay binding on?

Thanks,

Matt

Accepted Solutions (1)

Accepted Solutions (1)

MattHarding
SAP Mentor
SAP Mentor
0 Likes

Thanks to the community, there are a couple of ways of solving this. Easiest way (that works in my scenario) is to simply set "growing" to false and this goes away. (Thanks Al Templeton)

The other alternative given to me by Boghyon Hoffmann is to provide a key property in the aggregation. (refer to #1736 (comment))

Thanks all,

Matt

MattHarding
SAP Mentor
SAP Mentor
0 Likes

And if you read the doco - this explains it:

setGrowing

Sets a new value for property growing.

If set to true, enables the growing feature of the control to load more items by requesting from the model. Note:: This feature only works when an items aggregation is bound. Growing must not be used together with two-way binding.

Answers (2)

Answers (2)

MikeDoyle
Active Contributor
0 Likes

Hi Matt,

I haven't put a slider in a table, but I have put one in a list, using a custom list item. The sliders work fine in this scenario:

<List items="{path: 'Objectives>/Objectives', templateShareable: true}" >
     <CustomListItem>
        <Slider value="{Objectives>Weighting}" min="0" max="100" step="5"/>
     </CustomListItem>
</List>
MattHarding
SAP Mentor
SAP Mentor
0 Likes

Thanks Mike. Found solution so will add that now. Couple of ways of solving it actually.

Former Member
0 Likes

Hi Matt

Haven't seen this issue before - it might be a glitch in two-way binding to table rows since when you switch to one-way data binding, then the problem goes away...

onInit: function(oEvent) {
  var oModel = new JSONModel({
    DiffWeighting: 25, 
    Objectives: [ 
      { Description: "Value 1", Weighting: 25}, 
      { Description: "Value", Weighting: 50}
    ]
  });
  oModel.setDefaultBindingMode(sap.ui.model.BindingMode.OneWay);
  this.getView().setModel(oModel, "Objectives");
}

Chris W

MattHarding
SAP Mentor
SAP Mentor
0 Likes

Thanks Chris. OneWay binding does fix the behaviour somewhat, but then I have to put change events on all the fields plus other similar issues occur even with OneWay binding with more complex scenarios. e.g. The example is a simplified example I'm dealing but when you throw in OData based ComboBoxes lists, and more input fields; and it has other strange behaviour.

Work around (if I have to go down that path), is I'll manage the aggregation programmatically, but I was just hoping I'd done something stupid and someone would tell me what the stupid thing was!

BTW - This is happening from 1.44 to the latest UI5 release, but maybe I am the first one to do something like this! - It's a strange design pattern I'm going for based loosely on the following:

https://sapui5.hana.ondemand.com/#/sample/sap.m.sample.TableEditable/preview

Cheers,

Matt