Sapui5 将所选项目绑定到对话框
我试图在对话框的控件中显示来自表项的数据。这是一个扑克牌: 下面是获取项目数据并在Sapui5 将所选项目绑定到对话框,sapui5,Sapui5,我试图在对话框的控件中显示来自表项的数据。这是一个扑克牌: 下面是获取项目数据并在'detailItem'JSONModel中设置它的代码: onItemPress: function(evt) { var me = this; var view = me.getView(); var item = evt.getSource().getBindingContext('list').getObject(); view.getModel('detailItem').
'detailItem'
JSONModel中设置它的代码:
onItemPress: function(evt) {
var me = this;
var view = me.getView();
var item = evt.getSource().getBindingContext('list').getObject();
view.getModel('detailItem').setData(item);
var dlg = new sap.m.Dialog({
title: 'Edit Item',
type: 'Message',
content: [
new sap.m.VBox({
items: [
new sap.m.Label({
text: 'Section'
}),
new sap.m.Input({
value: '{detailItem>sectionId}'
}),
new sap.m.Label({
text: 'Cost'
}),
new sap.m.Input({
value: '{detailItem>costId}'
})
]
})
],
beginButton: new sap.m.Button({
text: 'Ok',
press: function() {
dlg.close();
}
}),
endButton: new sap.m.Button({
text: 'Cancel',
press: function() {
dlg.close();
}
}),
afterClose: function() {
dlg.destroy();
}
}).open();
}
这部电影很直白。基本上,我想在表中选择一个项目,打开一个带有几个输入字段的对话框,允许编辑数据。我试图通过设置'detailItem'
模型的数据,并尝试将输入字段的值
属性绑定到相应的数据元素,将输入字段绑定到所选项目。以下是一个工作示例(来自您的):
使用相对绑定语法的方法是正确的。但是,我们不需要第二个模型,因此在您的对话框中将{detailItem>
替换为{list>
。然后,我们可以将给定的绑定上下文(从所选项目)设置到对话框,以便可以解析对话框中的相对绑定:
dialog.setBindingContext(item.getBindingContext("list"), "list")
但仅此一点还不够。对话框仍然不会显示所选数据,因为它不是视图的后代,因此它不知道“list”
模型
解决此问题的一种方法是将对话框添加到视图或视图中任何其他控件的依赖项的聚合中。这样,模型将传播到对话框中。作为一种额外效果,当主控件被销毁时,它将一起销毁:
特殊聚合依赖项
连接到生命周期管理和数据绑定,但不会自动呈现,可用于弹出窗口或其他依赖控件或元素。这允许在声明性视图中定义弹出控件,并允许向其传播模型和上下文信息
由于所有控件都提供聚合,因此还可以将对话框定义从控制器移动到视图