我坚持认为SAPUI5中的概念是否可行,并且由于文档在这个详细程度上可能有点难以处理,我在研究路径中提出的问题比正常情况要早。主要是我不想花太多时间,如果有一个立即'否'的答案。
我有一个使用JSON模型的master-detail视图的用例,但是我必须生成自己的控件 - 我不能使用SplitApp等。
该模型实际上是一个2层深的树,主要导致细节。从概念上讲是这样的:
#!/bin/sh
for fil in $(git diff --name-only --staged | grep ".js"); do
esformatter -i$ fil & git add $fil;
done
git commit -m "Adding format to files"
UX是一个可选择的主人列表,当选择时,将刷新详细列表控件以显示所选主人的子节点的详细信息。
我熟悉通过
将模型绑定到视图{
"master": [
{
"name": "Master 1",
"detail" : [
{
"name": "Detail 1-1"
},
{
"name": "Detail 1-2"
}
]
},
{
"name": "Master 2",
"detail" : [
{
"name": "Detail 2-1"
},
{
"name": "Detail 2-2"
}
]
}
]
}
但是根据我迄今为止的学习情况,这会将视图中的所有控件绑定到一个模型。
我认为可能值得追求的选择是:
进一步解释2,如果说我正在使用表格进行详细显示,我可能会在表格中使用def
sap.ui.getCore().setModel(oModel)
this.getView().setModel(oModel)
所以我希望修改类似
的路径 <Table
id="detailList"
items="{
path: '/'
}",
...
>
其中n表示所选的主实例。
是可能的,还是有其他选择,或者我应该放弃。
编辑:我在constructor找到了这个基于过滤器的潜在解决方案。他的描述是:我将举例说明如何实现matser-detail SAPUI5中的关系。
使用案例:当用户点击第一个表格中的客户端时, 所有相关订单都应显示在第二个表中。命令 应该隐藏其他客户。
因此,在我们看来,我们有两个表:
表:客户
- 醇>
表:订单
创建两个表并设置数据绑定后,执行 第一个表上的这个事件处理程序:
path: '/master[n]/detail/'
我可以看到这种方法对我来说是可行的 - 有没有理由说明这种模式存在根本缺陷?
答案 0 :(得分:8)
一般来说,您的视图可以包含您喜欢的模型。唯一的限制是只能有一个无名模型,即所有其他模型都需要命名。以下代码显示了差异:
this.getView().setModel(new JSONModel(data));
this.getView().setModel(new JSONModel(data), name));
要绑定命名模型,必须在绑定指令中提供其名称,否则运行时将使用无名模型。以下示例显示了差异(请注意,除非您要提供其他参数,否则可以使用短绑定语法,即您可以省略path
属性:
<Table items="{/path}">
<Table items="{name>/path}">
在您的示例中,我建议使用一个模型并使用绑定上下文来控制详细信息表中显示的数据。
详细信息表的绑定应该是相对的,如下所示:
<Table id="detailList" items="{detail}">
处理选择主列表的处理程序如下:
onMasterItemSelect : function(event) {
// get the binding context of the currently selected master item, e.g. /master/0
var masterBindingContext = event.getParameter("listItem").getBindingContext();
// bind detail table to the selected master item using bindElement
this.byId("details").bindElement(masterBindingContext.getPath());
}