SAPUI5:如何在运行时创建XMLView及其控制器?

时间:2017-03-09 12:33:49

标签: javascript sapui5

我想在运行时创建一个XMLView并将控制器绑定到它。但我不知道如何在运行时创建控制器和实例。

这是我写的代码:

var oView = sap.ui.xmlview(sViewId, {
            viewContent: sViewContent,
            controller: ?????
        });
oRouter.getViews().setView(sViewName, oView);

以下是我根据以下代码编写的API:

https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.html#.xmlview

1 个答案:

答案 0 :(得分:2)

这有两种主要方式。 您可以动态定义新的控制器类,然后使用它来实例化新的控制器实例:

var MyController = sap.ui.core.mvc.Controller.extend("MyController", {
    onInit: function() {
        // do something
    }
});
var oView = sap.ui.xmlview(sViewId, {
     viewContent: sViewContent,
     controller: new MyController()
});

或者您可以使用sap.ui.controller函数定义新控制器,然后获取它的实例:

// first define the new controller type
sap.ui.controller("MyController", {
    onInit: function() {
        // do something
    }
});
var oView = sap.ui.xmlview(sViewId, {
     viewContent: sViewContent,
     // then instantiate the controller
     controller: sap.ui.controller("MyController")
});

如果在视图XML内容中引用了控制器名称,那么您不必将控制器实例传递给sap.ui.xmlview函数调用。例如。您可以查看SAPUI5 jsfiddle模板:https://jsfiddle.net/nistv4n/93mx0yvt/