引言
我们想要丰富弹出框的内容,想让他承载更多的信息。如下图。
这样的话,单靠dialog是无法满足我们的需求的。所以我们可以尝试用到下面的方法。
实施
1、创建view.xml
首先我们需要创建两个view.xml,一个作为主界面view1,另一个作为充当dialog的界面view2。
我们在view1创建一个按钮,期望于点击按钮后弹出view2。
2、controller
Dialog_view2: function(oEvent) {
this.mDialogs = this.mDialogs || {};
//创建一个空数组
var sDialogName = "view2";
//定义一个字符串为view2的view名字,这里是方便代码的复用
var oDialog = this.mDialogs[sDialogName];
//定义一个sDialogName的数组的变量
var oView;
if (!oDialog) {
oView = sap.ui.xmlview({viewName: "WILLMyProspects.view." + view2});
//实例化view1
this.getView().addDependent(oView);
//与controller的生命周期有关
oDialog = oView.getContent()[0];
//让oDialog获取到view1数组下的第一个节点dialog
}
oDialog.open();
//显示dialog
3、分析
Fiori的弹出框组件只能以dialog相关组件显示,而不能以view的形式显示。
如果我们这样输出
oView = sap.ui.xmlview({viewName: "WILLMyProspects.view." + view2}
oView.open();
后台会报错为oView.open()不是一个函数。
但是dialog却是存在于OView的第一个节点下的,我们利用这一点,获取到他的第一个节点,然后view就可以以dialog的形式显示在页面上了。