如何从 UI5 中的父上下文获取 OData 上下文
How to get OData Context from parent Context in UI5
我在 UI5 中使用 OData V4 模型。我创建了一个包含一些扩展的绑定,现在我尝试获取子实体的上下文。
这是我如何将实体绑定到某个元素的代码。结果,我得到一个带有 'SomeEntity' 的对象和一个带有 'SomeOtherEntity' 作为 属性.
的数组
oPage.bindElement({
path: /SomeEntity(id),
parameters: {
$expand: {
SomeOtherEntity: {
$select: ['ID', 'name', 'sequence'],
$orderby: 'sequence'
}
}
}
});
现在我可以通过 oPage.getBindingContext()
获取绑定的上下文,并且可以从此对象执行 requestObject, setProperty, create
和 delete
等方法。
我想要的是获取 'SomeOtherEntity' 属性之一的上下文以(例如)删除其中之一。
我不知道如何做到这一点。有人有想法吗?
您可以创建自己的 ListBinding 到 SomeOtherEntity 并过滤所需的集合。
(我不太确定,但可能需要触发 ListBinding 上的刷新以强制初始加载)
加载数据(dataReceived-Event)后,删除所有Context。
每删除 returns 个 Promise,您可以继续执行 Promise.all.
var oDataModel = this.getModel();
var aPromises= [];
var oListBinding = oDataModel.bindList("/SomeOtherEntity", undefined, undefined, new Filter("ID", FilterOperator.EQ, sIdToDelete), {
$$operationMode: OperationMode.Server
});
oListBinding.attachEventOnce("dataReceived", function (oEvent) {
var aContexts = oListBinding.getContexts();
aContexts.forEach(function (oContext) {
aPromises.push(oContext.delete("$auto"));
});
Promise.all(aPromises).then(function () {
/* Cleanup after Deletion
});
});
我在 UI5 中使用 OData V4 模型。我创建了一个包含一些扩展的绑定,现在我尝试获取子实体的上下文。
这是我如何将实体绑定到某个元素的代码。结果,我得到一个带有 'SomeEntity' 的对象和一个带有 'SomeOtherEntity' 作为 属性.
的数组oPage.bindElement({
path: /SomeEntity(id),
parameters: {
$expand: {
SomeOtherEntity: {
$select: ['ID', 'name', 'sequence'],
$orderby: 'sequence'
}
}
}
});
现在我可以通过 oPage.getBindingContext()
获取绑定的上下文,并且可以从此对象执行 requestObject, setProperty, create
和 delete
等方法。
我想要的是获取 'SomeOtherEntity' 属性之一的上下文以(例如)删除其中之一。 我不知道如何做到这一点。有人有想法吗?
您可以创建自己的 ListBinding 到 SomeOtherEntity 并过滤所需的集合。
(我不太确定,但可能需要触发 ListBinding 上的刷新以强制初始加载)
加载数据(dataReceived-Event)后,删除所有Context。 每删除 returns 个 Promise,您可以继续执行 Promise.all.
var oDataModel = this.getModel();
var aPromises= [];
var oListBinding = oDataModel.bindList("/SomeOtherEntity", undefined, undefined, new Filter("ID", FilterOperator.EQ, sIdToDelete), {
$$operationMode: OperationMode.Server
});
oListBinding.attachEventOnce("dataReceived", function (oEvent) {
var aContexts = oListBinding.getContexts();
aContexts.forEach(function (oContext) {
aPromises.push(oContext.delete("$auto"));
});
Promise.all(aPromises).then(function () {
/* Cleanup after Deletion
});
});