2017-05-26 28 views
0

我遇到了不斷增加的列表問題。以前我有一個正常的列表,但由於它限於顯示100個項目,所以現在我需要將其更改爲不斷增加的列表,現在可以正常工作,並且當我將增加=「 true「growingThreshold =」50「growingScrollToLoad =」false「屬性在列表中。SAPUI5 - 增長列表上的輸入錯誤,邏輯問題

但是現在我遇到了自定義列表中的數字輸入之一的問題,當輸入一個數字時它不會保持設置(它有一個更新文本組件的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

+0

'VAR iReceivedValue做= iNewValue *(iValuationPrice/iQuantity) oModel.setProperty(sItemPath +「/ _ReceivedValue',iReceivedValue)' –

+0

謝謝,它允許它工作。我的JS不是太棒了,你能解釋它在做什麼嗎?我現在也正在獲取iNewValue未定義的控制檯錯誤。 – Scott

回答

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. 如果你在你只chaning中的DataModel和Sapui5特定屬性的模型中使用setProperty()能夠進行此屬性bindingchanges只(而不是整個模型)。

  2. 如果您通過getData()從模型中獲取數據,則只會獲取對該對象的引用。如果您在此對象上更改了某些內容,則不必通過setData()(它已經存在,因爲您使用了此對象的引用)將其設置回來。

但Sapui5需要知道,在數據模型特定的變化,這是通過使用setProperty()

+0

^^上述不起作用。我玩過,最後我在設置數據之前設置了屬性。 oModel.setProperty(oItem._ReceivedValue); 感謝您的幫助。 – Scott