2017-04-21 32 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

相关问题