Sapui5 如何静态地向项添加控件

Sapui5 如何静态地向项添加控件,sapui5,Sapui5,有时在聚合绑定中,我需要静态地向生成的项列表添加一些控件。有什么优雅的解决方案吗 假设我有一个Select,代码如下: 绑定到具有以下数据的模型: { 里程碑:[ { “Id”:1, “名称”:“成本估算1”, “说明”:“初始成本估算” }, { “Id”:2, “名称”:“Pid包”, “说明”:“准备询价” }, ... ] } 我想用key=“0”和value=“”将一个项目添加到Select中,即使project>/millements的内容发生了更改,也会保留该项目,但我不想将

有时在聚合绑定中,我需要静态地向生成的项列表添加一些控件。有什么优雅的解决方案吗

假设我有一个Select,代码如下:


绑定到具有以下数据的模型:

{
里程碑:[
{
“Id”:1,
“名称”:“成本估算1”,
“说明”:“初始成本估算”
},
{
“Id”:2,
“名称”:“Pid包”,
“说明”:“准备询价”
},
...
]
}
我想用
key=“0”
value=“
将一个项目添加到Select中,即使
project>/millements
的内容发生了更改,也会保留该项目,但我不想将其添加到实际的聚合中


我目前的解决方案看起来非常粗糙,并且在以后会产生问题:创建一个新模型(属性)会导致数据在多个列表中重复,因此它可能会在某个时候失去同步。我也尝试过通过绑定事件添加静态项,但这有点容易出错,而且非常冗长。

好,这里是承诺的代码片段。首先,如果您只想添加一个“空白”项,我建议您使用ComboBox而不是Select,因为您可以随时删除您的选择。我也将其添加到代码片段中。 但如果要添加项目,只需使用所述的
addItem()
函数即可

我还添加了一个按钮来修改您的模型,这样您就可以看到即使您更改了“”项,该项仍然保留在那里

一小条

带XmlView的MVC
//定义新的(简单的)控制器类型
sap.ui.controller(“my.own.controller”{
onSelectBindingChange:函数(oEvent){
var oNewItem=new sap.ui.core.Item({
关键字:0,
正文:“”
});
this.getView().byId(“mySelect”).addItem(oNewItem);
},
按下ON按钮:功能(oEvent){
var aMilestones=this.getView().getModel(“项目”).getProperty(“/里程碑”);
艾米尔斯通({
Id:4,
名称:“新里程碑”,
描述:“只是模型修改”
});
this.getView().getModel(“项目”).setProperty(“/millestones”,aMilestones);
}
});
/***这是“应用程序”代码***/
//创建一些伪JSON数据
风险值数据={
里程碑:[{
“Id”:1,
“名称”:“成本估算1”,
“说明”:“初始成本估算”,
},
{
“Id”:2,
“名称”:“Pid包”,
“说明”:“已准备好询价”,
},
{
“Id”:3,
“名称”:“证书检查”,
“描述”:空,
}
]
};
var oJSONModel=new sap.ui.model.json.JSONModel();
oJSONModel.setData(数据);
//实例化视图
var myView=sap.ui.xmlview({
viewContent:jQuery('#view1').html()
}); // 访问上面脚本标记内的HTML
setModel(oJSONModel,“项目”);
//将视图放到屏幕上
myView.placeAt(“内容”);

您的意思是要将一个列表绑定到不同型号上的两个不同集合吗?或者您只有一个集合,您想在列表中手动插入一些项目?我编辑了问题,只留下关于向聚合添加静态项目的部分。好的!我会在家里给你讲一段。同时,你能提供一些代码吗?您的XML视图,要知道您正在使用哪些控件,模型的一部分正在绑定,要知道数据结构,以及要插入的“静态元素”的一个示例