Let's imagine that we have sap.m.UploadCollection
and we bind the data to this collection which is done like this:
bind: function () {
this._oUploadCollection.bindAggregation("items", {
path: "/attachments",
factory: jQuery.proxy(this._bindUploadCollectionItem, this)
});
},
The example of the binding data is here:
{
"attachments": [
{
"size": 123,
"filename": "pdf.pdf",
"id": "pdfId"
},
{
"size": 440,
"filename": "text.txt",
"id": "textId"
}
],
"source":"personWhoAddedAttachments"
}
So, in _bindUploadCollectionItem
I successfully can get size
, filename
and id
by oContext.getProperty("nameOfParameter")
, but cannot get 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
}]
});
},
So, because I bind attachments
it is kind of clear that I could not get source
, but how to reach it if I need it?
答案 0 :(得分:0)
这取决于您想要获得的模型的属性。如果它真的像你描述它并且目标属性在/source
绝对模型路径中,那么在工厂函数中获取它的最简单方法是使用: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
}]
});
您基本上通过搜索路径中的最后/
来获取父对象路径。您可以重复应用(或使用拆分,弹出一些元素,然后连接)来到祖先(例如父母的父母)。