这是我第一次在这里发帖。
我有一个 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/