javascript - SAPUI5:如何在运行时创建XMLView及其 Controller ?

标签 javascript sapui5

我想在运行时创建一个 XMLView 并将 Controller 绑定(bind)到它。但我不知道如何在运行时创建 Controller 实例。

这是我编写的代码:

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

最佳答案

主要有两种方法。 您可以动态定义一个新的 Controller 类,然后使用它来实例化一个新的 Controller 实例:

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函数定义一个新的 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")
});

如果在 View XML 内容中引用 Controller 名称,则不必将 Controller 实例传递给 sap.ui.xmlview 函数调用。例如。你可以看看SAPUI5 jsfiddle模板:https://jsfiddle.net/nistv4n/93mx0yvt/

关于javascript - SAPUI5:如何在运行时创建XMLView及其 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42695535/

相关文章:

javascript - 带有事件的嵌套元素

data-binding - UI5中更新模型,使用formatter时双向数据绑定(bind)变成单向

javascript - SAPUI5 XML View ,带有 JavaScript 代码中定义的过滤器

javascript - 递归过滤大型 JavaScript 对象

javascript - 在html中使用ajax处理HTTP获取响应

php - 倒计时器与php mysql交互

javascript - 从列表中选择 4 张图像

sapui5 - 如何将控件引用传递给 XMLView 中的格式化程序?

javascript - SAPUI5:正确处理点击事件

javascript - 如何在 UI5 中对 F5 按键执行自己的操作?