【问题标题】:How to bind transient oData object to detail view如何将瞬态 oData 对象绑定到详细视图
【发布时间】:2017-11-16 13:19:38
【问题描述】:

在我的 SAPUI5 应用程序中,我使用 odata v4 模型与服务器通信。我有一个绑定到现有对象的详细视图,如下所示:

// Controller code:
this.getView().bindElement({
                    path: "/Objects(" + this.m_ObjectId + ")",
                    model: "modelName"
                });

如果我想在该视图中创建一个新项目,当然我不会绑定到现有项目。从the documentation 我看到应该像这样创建新项目:

var oModel = this.getModel("modelName");
var oListBinding = oModel.bindList('/Objects');
var oNewKap = oListBinding.create({
    'OBJECT_ID': 0,
    'SOME_PROP': 'Test'
});

现在的问题是,如何将新创建的(瞬态)对象绑定到我的视图?如果我做一个

this.getView().bindElement({
                        path: "/Objects(0)",
                        model: "modelName"
                    });

应用将再次尝试从服务器获取现有项目...

感谢任何帮助!

【问题讨论】:

  • 嗯,有人愿意为反对票点名吗?
  • 您是否尝试过不提供 ID 以便框架可以生成临时 ID?它是 v2.ODataModel 中的“createEntry”……对 v4 不太熟悉。有点奇怪 create 方法只存在于 ListBinding :/
  • 谢谢!毕竟我已经尝试过,我不确定我是否在没有 id 的情况下进行了测试。我将在下周尝试,因为我目前没有机会访问该代码。是的:oData v4 支持确实令人困惑。我会保持更新。
  • 如何从显示现有项目详细信息的页面创建新项目?从用户体验方面来看,我不明白这有什么意义。
  • 我在应用程序中的任何地方使用值 ID=0 的路由(如果需要,甚至作为入口页面)。然后详细信息页面应处理新项目的创建。

标签: data-binding odata sapui5


【解决方案1】:

你可以this.getView().setBindingContext(oNewKap)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2023-04-07
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    相关资源
    最近更新 更多