javascript - 在Sap.m.Select中bindAggregation之后使用insertItem

标签 javascript sapui5

这是我第一次在这里发帖。

我有一个 sap.m.Select,它使用“bindAggregation”方法显示 oDataModel 中的年份。

我的想法是在选择中创建一个额外的项目,其中包含文本:“所有值”和键:“*”,所以我尝试在“bindAggregation”之后使用“insertItem”,但我创建的项目没有仅显示来自 oDataModel 的 Years。

这是代码:

var yearSelectBox = this.getView().byId("idYearSelectBox");
yearSelectBox.setModel(new sap.ui.model.odata.ODataModel("../../../ui/WebContent/Kpi/services/dates.xsodata", true));
yearSelectBox.bindAggregation("items", "/Years", new sap.ui.core.Item({
            key: "{YEAR}",
            text: "{YEAR}"
        }),0);
yearSelectBox.insertItem(new sap.ui.core.Item({
            key: "*",
            text: "All Values"
        }));

我尝试在bindAggregation之前使用insertItem,使用itemIndex = -1, 0, 20,但没有任何改变。

最佳答案

不幸的是,您想要实现的目标虽然对您有意义,但在绑定(bind)上下文中却没有意义。当您将数据模型绑定(bind)到控件时,该控件的所有呈现都基于该模型。此外,任何更改均通过。控件被推回模型 - 这使模型和控件保持同步。因此,一旦绑定(bind)就位,您就不能简单地将另一个项目添加到聚合中。绑定(bind)控制添加(更新和删除)哪些项目,而不是编程干扰。您有两个简单的选项(也许还有其他选项):将模型数据读入 JSON 模型,包括您的所有值下拉条目,然后将下拉控件绑定(bind)到该 JSON 模型,或者添加 底层 OData 数据库表的所有值条目,以便它显示在下拉列表中。

关于javascript - 在Sap.m.Select中bindAggregation之后使用insertItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30812075/

相关文章:

javascript - Stripe 3dSecure createSource 在重定向网址中设置自定义参数

date - 从 SAPUI5 表中的 ODataModel 格式化日期

javascript - 来自两个实体集的 xml View 绑定(bind)数据

odata - 如何使用 $select 从 ui5 应用程序调用 odata?

javascript - 具有动态定义 url 的 iframe 为空

javascript - 在sapui5片段的xml文件中使用jquery

javascript - Angular 2 : is styleUrls relative to the current component?

javascript - 加载时可以单击按钮 #1,然后需要单击按钮 #2 两次。然后按钮 #1 也需要点击两次

javascript - 如何根据被点击的特定链接设置 cookie

javascript - 简化 Javascript 中的 promise