我遇到了越来越多的问题。以前我有一个正常的列表,但由于它仅限于显示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);
},
答案 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)
}
如果您在模型上使用setProperty()
,那么您只能在DataModel中查找特定属性,而Sapui5只能在此属性上进行绑定更改(而不是整个模型)。
如果您通过getData()
从模型中获取数据,则只能获得对此对象的引用。如果您在此对象上更改了某些内容,则不必将其设置为setData()
(它已经存在,因为您使用了此对象的引用)。
但是Sapui5需要知道数据模型中有一个特定的变化,这是通过使用setProperty()