SAPUI5 - 增长列表中的输入错误,逻辑问题

时间:2017-05-26 10:09:08

标签: list data-binding sapui5

我遇到了越来越多的问题。以前我有一个正常的列表,但由于它仅限于显示100个项目,我现在需要将其更改为一个不断增长的列表,现在工作正常,我可以在我强加生长="真" growingThreshold =" 50" growScrollToLoad =" false" 列表中的属性。

但是现在我对自定义列表中的一个数字输入有一个问题,当输入一个数字时它没有保持设置(它有一个更新文本组件的liveChange事件)。

我在控制器中设置了一个断点进行测试,当我尝试设置数据更改时,它似乎会出错(附加图像上的红色箭头)。

任何人都可以看到逻辑问题吗?如果需要任何其他代码片段,我可以提供它们。

onReceivedQuantityChange: function (oEvent) {
            // get model and data
            var oModel = this.getOrderModel();
            var oData = oModel.getData();

            // get item from path
            var oItem = this._getOrderItemByPath(oEvent.getSource().getBindingContext(this.MODEL_ORDERS).getPath());

            // set received value
            oItem._ReceivedValue = oEvent.getParameters().newValue * (oItem.ValuationPrice / oItem.Quantity);

            // apply data changes
            oModel.setData(oData);
        },

Controller code image

1 个答案:

答案 0 :(得分:0)

onReceivedQuantityChange: function (oEvent) {    
   var oModel = this.getOrderModel()
   var sItemPath = oEvent.getSource().getBindingContext(this.MODEL_ORDERS).getPath()
   var iValuationPrice = oModel.getProperty(sItemPath + '/ValuationPrice')
   var iQuantity = oModel.getProperty(sItemPath + '/Quantity')

   var iNewValue = oEvent.getParameters().newValue
   var iReceivedValue = iNewValue * (iValuationPrice / iQuantity) 
   oModel.setProperty(sItemPath + '/_ReceivedValue', iReceivedValue)
}
  1. 如果您在模型上使用setProperty(),那么您只能在DataModel中查找特定属性,而Sapui5只能在此属性上进行绑定更改(而不是整个模型)。

  2. 如果您通过getData()从模型中获取数据,则只能获得对此对象的引用。如果您在此对象上更改了某些内容,则不必将其设置为setData()(它已经存在,因为您使用了此对象的引用)。

  3. 但是Sapui5需要知道数据模型中有一个特定的变化,这是通过使用setProperty()

    来完成的。