2017-04-21 19 views
0

讓我們想象一下,我們有sap.m.UploadCollection,我們將數據綁定到這個集合這是這樣完成的:如何在工廠方法中獲得另一個上下文路徑?

bind: function() { 
    this._oUploadCollection.bindAggregation("items", { 
     path: "/attachments", 
     factory: jQuery.proxy(this._bindUploadCollectionItem, this) 
    }); 
}, 

綁定數據的例子是在這裏:

{ 
    "attachments": [ 
     { 
      "size": 123, 
      "filename": "pdf.pdf", 
      "id": "pdfId" 
     }, 
     { 
      "size": 440, 
      "filename": "text.txt", 
      "id": "textId" 
     } 
    ], 
    "source":"personWhoAddedAttachments" 
} 

所以,在_bindUploadCollectionItem我成功可以得到sizefilenameid通過oContext.getProperty("nameOfParameter"),但不能得到source

_bindUploadCollectionItem: function (sID, oContext) { 
    return new sap.m.UploadCollectionItem({ 
     "id": oContext.getProperty("id"),    
     "fileName": oContext.getProperty("filename"),        
     "attributes": [           
     { 
      "title": "author", 
      "text": oContext.getProperty("../source") // <- problem 
     }] 
    }); 
}, 

所以,因爲我綁定了attachments這很明顯,我無法獲得source,但如何在需要時達到它?

回答

0

這取決於你想要的模型的屬性。如果它真的像你描述的那樣,並且目標屬性位於絕對模型路徑中,則在工廠函數中獲取它的最簡單方法是使用:oContext.getModel().getProperty("/source")

如果你需要的東西是一個集合裏(並以某種方式依賴於當前上下文),可以實現類似於通過使用沿着線的東西試過..路徑結構的影響:

var sPath = oContext.getPath(), 
    sParent = sPath.substring(0, sPath.lastIndexOf("/")), 
    sText = oContext.getModel().getProperty(sParent + "/source"); 
return new sap.m.UploadCollectionItem({ 
    "id": oContext.getProperty("id"),    
    "fileName": oContext.getProperty("filename"),        
    "attributes": [{ 
     "title": "author", 
     "text": sText 
    }] 
}); 

您基本上通過搜索路徑中的最後一個/來獲取父對象路徑。您可以反覆應用(或使用拆分,彈出一些元素,然後進行連接)以獲得祖先(例如父代的父代)。

+0

感謝,oContext.getModel()。getProperty(「/ source」)使它工作! – Rufi

相關問題